首页 > 解决方案 > 如何使用python脚本同步两个文件夹

问题描述

目前,我正在开发一个同步两个文件夹的项目。在以下示例中,我的文件夹将 ad Folder_1 命名为源Folder_2 命名为目标我想做以下事情。

  1. 如果 Folder_1 中存在的文件在 Folder_2 中不存在,则将文件从 folder_1 复制到 Folder_2 ,反之亦然
  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+ '!')

我可以修改或做什么才能完全同步两个文件夹?提前致谢 :)

标签: pythonoperating-systemshutilos.walk

解决方案


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

使用简单代码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

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


推荐阅读