繁体   English   中英

使用 Python 3 将文件一一移动到每个文件的新创建目录

[英]Move files one by one to newly created directories for each file with Python 3

我拥有的是一个初始目录,其中 D:\BBS\file.x 中有一个文件,工作目录 D:\ 中有多个.txt 文件

我要做的是复制文件夹 BBS 及其内容并按数字递增其名称,然后将每个现有的.txt 文件复制/移动到新创建的目录以使其成为 \BBS1、\BBS2、...、BBSn (取决于 txt 的数量)。

之前和之后的视觉示例:

\WorkFolder 的初始视图

之前的工作目录内容

\WorkFolder 的所需视图

脚本前的工作目录内容(需要)

现在,我只创建了一个新目录并在其中移动 txt,但一次完成,而不是我想要的。 这是我的代码:

from pathlib import Path
from shutil import copy
import shutil
import os

wkDir = Path.cwd()
src = wkDir.joinpath('BBS')
count = 0

for content in src.iterdir():
    addname = src.name.split('_')[0]
    out_folder = wkDir.joinpath(f'!{addname}')
    out_folder.mkdir(exist_ok=True)
    out_path = out_folder.joinpath(content.name)
    copy(content, out_path)

files = os.listdir(wkDir)

for f in files:
    if f.endswith(".txt"):
        shutil.move(f, out_folder)

如前所述,我恳请协助将文件一一增加和复制到新创建的目录中。

一般用python技能不多。 Python3 OS Windows 提前致谢

现在,我明白你想要完成什么。 我认为您只需遍历文本文件并为每个文件复制 BBS 文件夹就可以很容易地做到这一点。 之后,您移动当前所在的文件。 为了获取folder_num ,如果名称始终为TextXX.txt模式,您可能只能访问特定索引处的文件名字符(例如f[4:6] )。 如果前缀“Text”可能有所不同,则使用如下示例中的正则表达式会更稳定。

此外,function shutil.copytree复制一个目录及其子目录。

import re
import shutil
from pathlib import Path

wkDir = Path.cwd()
src = wkDir.joinpath('BBS')

for f in os.listdir(wkDir):
    if f.endswith(".txt"):
        folder_num = re.findall(r"\d+", f)[0]
        target = wkDir.joinpath(f"{src.name}{folder_num}")

        # copy BBS
        shutil.copytree(src, target)

        # move .txt file
        shutil.move(f, target)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM