将文件夹中的文件移动到顶级目录

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

这会将所有内容移至顶级目录。