Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python 3将每个文件逐个移动到新创建的目录中_Python_Windows_Directory_Txt - Fatal编程技术网

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

使用Python 3将每个文件逐个移动到新创建的目录中,python,windows,directory,txt,Python,Windows,Directory,Txt,我拥有的是一个初始目录,其中一个文件位于D:\BBS\file.x中,多个.txt文件位于工作目录D中:\ 我试图做的是复制文件夹BBS及其内容并按编号递增其名称,然后将每个现有的.txt文件复制/移动到新创建的目录中,使其成为\BBS1、\BBS2、…、BBSn(取决于txt的编号) 之前和之后的可视示例: \WorkFolder的初始视图 所需的\WorkFolder视图 现在,我只创建了一个新目录并在其中移动txt,但这一切都是一次性的,而不是我想要的。这是我的密码: from pat

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

我试图做的是复制文件夹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操作系统Windows
提前谢谢

现在,我明白你想要完成什么了。我认为你可以很容易地做到这一点,只需迭代文本文件,并为每一个你复制的BBS文件夹。然后移动当前所在的文件。为了获取
文件夹\u 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)

我不明白实际的问题是什么。你能详细说明一下吗?所以问题是你想把文件夹复制和txt文件复制分开?我是不是误解了这个问题?您是否可以添加一个文件树的前后示例,解释在后一个案例中哪些功能不正常?@schilli感谢您的澄清。我已经在帖子中提供了这些图片。如果不清楚,请随时询问更多。这确实运行良好。从现在起,我看到并有了如何处理逻辑的例子。我在想这件事有点复杂。顺便说一句,非常感谢你向我展示了如何让事情变得简单。非常感谢你,非常欢迎。通常对于复制文件这样的简单任务,当您最终得到一个相当复杂的解决方案或感觉它比任务更复杂时,请从代码中退一步,重新考虑是否可以用另一种方式完成,因为在python中通常有非常好的简单解决方案,并且python的标准库是一个强大的工具。