如何使用python脚本同步两个文件夹

时间:2019-02-14 10:52:32

标签: python operating-system shutil os.walk

当前,我正在一个项目中,该项目正在同步两个文件夹。在以下示例中,我的文件夹将广告 Folder_1命名为源,将 Folder_2命名为目标

  1. 如果Folder_1中没有文件,而Folder_2中没有文件, 将文件从folder_1复制到Folder_2和 Vice Versa
  2. 如果我重命名两个文件夹中的任何文件,它将在另一个文件夹中进行更新,而不是复制具有更新名称的新文件。
  3. 如果我从任何文件夹中删除任何文件,它也应该从其他文件夹中删除。

我已经完成了第一点的一半工作,可以将文件从Folder_1复制到Folder_2。发送我可以将文件从Folder_2复制到Folder_1的部分仍然保留。

以下是我的代码

import os, shutil
path = 'C:/Users/saqibshakeel035/Desktop/Folder_1/'
copyto = 'C:/Users/saqibshakeel035/Desktop/Folder_2/'

files =os.listdir(path)
files.sort()
for f in files:
        src = path+f
        dst = copyto+f
        try:
                if os.stat(src).st_mtime < os.stat(dst).st_mtime:
                        continue
        except OSError:
                        pass
                        shutil.copy(src,dst)#this is the case when our file in destination doesn't exist
                               =
print('Files copied from'+ path +'to' + copyto+ '!')

我可以修改或执行哪些操作,以使两个文件夹完全同步?  在此先感谢:)

1 个答案:

答案 0 :(得分:1)

(与您的方法不同,但是可以按照查询的要求完成工作)

使用dirsync的简单代码:

from dirsync import sync
source_path = '/Give/Source/Folder/Here'
target_path = '/Give/Target/Folder/Here'

sync(source_path, target_path, 'sync') #for syncing one way
sync(target_path, source_path, 'sync') #for syncing the opposite way

有关更多选项,请参见此处的文档: dirsync - PyPI

当然,您可以根据需要手动添加异常处理。