python - 代码练习 - 差异备份

Posted Anec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python - 代码练习 - 差异备份相关的知识,希望对你有一定的参考价值。

差异备份

import os
import filecmp
import shutil

dir1 = r"./a"
dir2 = r"./b"

def a(dir1,dir2):
    cc = []
    d1 = os.path.abspath(dir1)
    d2 = os.path.abspath(dir2)
    a1 = filecmp.dircmp(d1,d2)

    cc += a1.diff_files + a1.left_only
    print("差异列表:",cc)

    if cc:
        for i3 in cc:
            # print(os.path.join(d1,i3))
            if os.path.isfile(os.path.join(d1,i3)):
                shutil.copy2(os.path.join(d1,i3),d2)
            else:
                os.makedirs(os.path.join(d2,i3))
                a(os.path.join(d1,i3),os.path.join(d2,i3))
    else:
        a2 = a1.left_list
        for i in a2:
            if os.path.isdir(os.path.join(d1,i)):
                a(os.path.join(d1,i), os.path.join(d2,i))

a(dir1,dir2)

 

缺点:

  a目录中修改了一个文件的文件名,那么b路径中会重新创建a目录中被修改的目录.

 

以上是关于python - 代码练习 - 差异备份的主要内容,如果未能解决你的问题,请参考以下文章

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

Xcode 4.6 的备份代码片段

Python学习笔记-校验源与备份目录差异

python源目录与备份目录差异检查并同步

python将文本转换成语音的代码

11--Python 备份文件程序