比较两个目录时如何移动不同和不存在的文件?

时间:2017-06-05 22:44:07

标签: python python-2.7

我有一个名为“dir1”的存档文件夹 我有一个名为“dir2”的新数据文件夹 我有一个差异文件夹,名为“dir3” 数据是jpgs,没有子文件夹。

dir1
1.jpg
2.jpg
3.jpg
4.jpg

dir2
1.jpg (edited file)
2.jpg (edited file)
3.jpg (same file as in dir1)
4.jpg (same file as in dir1)
5.jpg (new file)
6.jpg (new file)

我需要将新的,遗失的,编辑过的和不同的文件移动到dir3 结果将是:

dir3
1.jpg
2.jpg
5.jpg
6.jpg

这就是我所拥有的:

from filecmp import dircmp

dcmp = dircmp('dir1', 'dir2')

def main(dcmp):
    for name in dcmp.diff_files, dcmp.right_only:
        print (name)

if __name__ == "__main__":
    main(dcmp)

结果是:

['2.jpg', '1.JPG']
['6.jpg', '5.jpg']

“打印”的内容,我如何将它们移动到dir3 我试过“shutil”和“os.rename”,但我无法让它发挥作用。


来自“filecmp”和“dircmp”的信息。

import filecmp

filecmp.dircmp('dir1', 'dir2').report()

结果是:

diff dir1 dir2
Only in dir2 : ['5.jpg', '6.jpg']
Identical files : ['3.JPG', '4.JPG']
Differing files : ['1.JPG', '2.jpg']

这只是fyi。

2 个答案:

答案 0 :(得分:0)

以下是answer对如何创建新目录并将文件移动到其中的引用。

答案 1 :(得分:0)

您好像已经有了制作要移动的文件列表的部分。

import shutil

for file in file_list:
    shutil.move(file, dir3) # shutil.copy if you want

注意:file应该是文件的路径,如果要更改名称等,dir3可以是目录或文件路径。