首页 > 解决方案 > Python:复制文件和创建目录时,从列表或数据框中递归命名文件夹

问题描述

我需要搜索分布在数据库不同部分的文件和目录,然后将它们复制到将根据文件内容命名的文件夹中。许多文件/目录都有一个 10 位数字,这将是它们将被复制到的文件夹的名称。

我的想法是我会:

  1. 创建一个唯一的 10 位数字列表(已经完成)。
  2. 递归地搜索文件路径列表中的每个数字(我已经创建了文件路径列表)。
  3. 当我将文件/目录复制到新文件夹时,递归命名我将复制文件/目录到的文件夹(标题为那些 10 位数字)。

不要关心元数据复制。文件路径将是新的(没有被覆盖,并且我有必要的访问/权限)。

我正在考虑像这里显示的那样做:Copy files using python with complete folder structure

但我对如何设置代码感到困惑,这样我就可以iterate通过 my listof (windows) file paths、 my listof folder names(10-digit numbers) 以及每个文件夹的关联文件路径的另一个列表(该列表仍未制作,可能必须是每个文件夹的单独列表)。

幸运的是,大多数文件路径都有那个 10 位数的标识符,而且我已经有了一个可搜索的列表。

那么,我将如何递归地将这些 3+ 列表输入到代码中以复制文件?将其输入 pd.dataframe 是否更有意义?

我正在考虑使用下面链接中的代码,但欢迎提出建议。我不确定这是否会接受列表。文件和子目录将移动到同一目录中的新文件夹中(如图)。

filePath=["D:\\", "C:\\Users"]
# ext=['mkv','docx','doc','pdf','mp4','zip',]
fileExt=["**\*.docx","**\*.doc","**\*.pdf"]
fileList={}
for each_drive in filePath:
    fileList[each_drive]={}
    for each_type in fileExt:
        fileList[each_drive][each_type]=list(pathlib.Path(each_drive).glob(each_type))

file1 = open('test.txt', 'w')
for each in fileList.values():
    for each2 in each.values():
        for entry in each2:
            print(entry)
            file1.writelines(str(str(entry)+ "\n"))

在此处输入图像描述

标签: pythonpandasdirectoryfilepathfile-copying

解决方案


推荐阅读