我有一个脚本,可以将文件从一个文件夹结构复制到另一个具有不同结构的文件夹。
ex. Folder 1
c.txt
d.txt
subdir1
a.txt
b.txt
脚本以这种格式将文件/目录从文件夹 1 复制到文件夹 2(文件夹 2 具有不同的结构)
Folder 2
subdir2
c.txt
d.txt
subdir1
a.txt
b.txt
在文件夹 2 中,我可以创建自己的文件,如 new1.txt、new2.txt。创建新文件后,文件夹 2 结构将如下所示:
Folder 2
new1.txt
new2.txt
subdir2
c.txt
d.txt
subdir1
a.txt
b.txt
现在我需要比较文件夹 1 和文件夹 2 的目录内容。 我正在使用filecmp.dircmp来比较目录内容。FileCMP.DIRCMP on 这些两个文件夹将为我提供Subdir2,Subdir2/C.txt,Subdir2/d.txt作为新目录和带有new1.txt和new2.txt的新文件。但实际上我只创建了 new1.txt 和 new2.txt 作为新文件,其他文件仅从一个文件夹复制到另一个文件夹。
作为一个新文件,我只需要 new1.txt 和 new2.txt 结果。任何知道我该怎么做。我正在用python编写此代码
Tim是对的,os.walk
是解决方案:
>>> path = r'D:DATAFP12210My DocumentsTempPython'
>>> import os
>>> files1 = []
>>> for root, dirs, files in os.walk(os.path.join(path, 'Folder 1')):
files1.extend(files)
>>> files1
['c.txt', 'd.txt', 'a.txt', 'b.txt']
>>> files2 = []
>>> for root, dirs, files in os.walk(os.path.join(path, 'Folder 2')):
files2.extend(files)
>>> files2
['new1.txt', 'new2.txt', 'a.txt', 'b.txt', 'c.txt', 'd.txt']
然后,您可以比较输出:
>>> print [f for f in files2 if f not in files1]
['new1.txt', 'new2.txt']