使用 Python 3 将文件一个一个地移动到为每个文件新建的目录
Move files one by one to newly created directories for each file with Python 3
我有一个初始目录,在 D:\BBS\file.x 中有一个文件,在工作目录 D:\
中有多个 .txt 文件
我想做的是复制文件夹 BBS 及其内容并按数字递增其名称,然后 copy/move 每个现有的 .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”可能会有所不同,则使用正则表达式更稳定,如下例所示。
此外,函数 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)
我有一个初始目录,在 D:\BBS\file.x 中有一个文件,在工作目录 D:\
中有多个 .txt 文件我想做的是复制文件夹 BBS 及其内容并按数字递增其名称,然后 copy/move 每个现有的 .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”可能会有所不同,则使用正则表达式更稳定,如下例所示。
此外,函数 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)