gpt4 book ai didi

Python:比较具有不同结构的两个目录并列出新文件

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:55 25 4
gpt4 key购买 nike

我有一个脚本可以将文件从一个文件夹结构复制到另一个具有不同结构的文件夹。

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

现在我需要比较 Folder1 和 Folder2 的目录内容。我正在使用 filecmp.dircmp 比较目录内容。 filecmp.dircmp 在这些两个文件夹将给我 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:\DATA\FP12210\My Documents\Temp\Python'
>>> 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']

关于Python:比较具有不同结构的两个目录并列出新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com