将文件夹中的文件移动到顶级目录
Move files in folders to a top-level directory
我正在尝试为我的工作完成一个脚本来清理他们的文件组织系统。我脚本的最后一部分需要进入给定目录中的所有文件夹,并将每个文件夹中的所有文件移动到该目录。例如:
import os
path = 'C:/User/Tom/Documents'
folders = os.listdir(path)
print(folders)
假设文件夹结构是这样的:
Documents
[________ Folder A
..................[_________ File 1
..................[_________ File 2
[________ Folder B
..................[_________ File 3
..................[_________ File 4
[________ Folder C
..................[_________ File 5
..................[_________ File 6
..................[_________ File 7
我的目标是以某种方式进入 "Documents" 下的每个文件夹,通过将所有文件向上移动一层来清空文件夹,而不必输入文件夹名称或文件名称到文档路径中看起来像这样:
Documents
[________ Folder A
[_________ File 1
[_________ File 2
[________ Folder B
[_________ File 3
[_________ File 4
[________ Folder C
[_________ File 5
[_________ File 6
[_________ File 7
我是 python 的新手,关于如何有效地执行此操作,我唯一的想法是输入大量代码进入每个文件夹目录,然后 shutil.move() 它们。但是,这对我的应用程序不起作用,因为脚本需要能够为 X 数量的文件夹和 Y 数量的文件完成此任务,而不必输入每个文件夹路径。
我想就一种有效的方式寻求任何建议,我可以循环遍历我的 'folders' 列表并将文件从文件夹移到路径的目录中。
抱歉这么长 post,我只是想尽可能详细地说明我的问题,谢谢!
我建议使用 os.walk
进行自下而上的递归遍历,并相应地移动文件。
import os
import shutil
doc_path = 'C:/User/Tom/Documents'
for root, dirs, files in os.walk(doc_path, topdown=False):
for file in files:
try:
shutil.move(os.path.join(root, file), doc_path)
except OSError:
pass
这会将所有内容移至顶级目录。
我正在尝试为我的工作完成一个脚本来清理他们的文件组织系统。我脚本的最后一部分需要进入给定目录中的所有文件夹,并将每个文件夹中的所有文件移动到该目录。例如:
import os
path = 'C:/User/Tom/Documents'
folders = os.listdir(path)
print(folders)
假设文件夹结构是这样的:
Documents
[________ Folder A
..................[_________ File 1
..................[_________ File 2
[________ Folder B
..................[_________ File 3
..................[_________ File 4
[________ Folder C
..................[_________ File 5
..................[_________ File 6
..................[_________ File 7
我的目标是以某种方式进入 "Documents" 下的每个文件夹,通过将所有文件向上移动一层来清空文件夹,而不必输入文件夹名称或文件名称到文档路径中看起来像这样:
Documents
[________ Folder A
[_________ File 1
[_________ File 2
[________ Folder B
[_________ File 3
[_________ File 4
[________ Folder C
[_________ File 5
[_________ File 6
[_________ File 7
我是 python 的新手,关于如何有效地执行此操作,我唯一的想法是输入大量代码进入每个文件夹目录,然后 shutil.move() 它们。但是,这对我的应用程序不起作用,因为脚本需要能够为 X 数量的文件夹和 Y 数量的文件完成此任务,而不必输入每个文件夹路径。
我想就一种有效的方式寻求任何建议,我可以循环遍历我的 'folders' 列表并将文件从文件夹移到路径的目录中。
抱歉这么长 post,我只是想尽可能详细地说明我的问题,谢谢!
我建议使用 os.walk
进行自下而上的递归遍历,并相应地移动文件。
import os
import shutil
doc_path = 'C:/User/Tom/Documents'
for root, dirs, files in os.walk(doc_path, topdown=False):
for file in files:
try:
shutil.move(os.path.join(root, file), doc_path)
except OSError:
pass
这会将所有内容移至顶级目录。