【问题标题】:How to synchronize two folders using python script如何使用python脚本同步两个文件夹
【发布时间】:2019-07-08 09:05:12
【问题描述】:

目前,我正在处理一个同步两个文件夹的项目。在以下示例中,我的文件夹将广告 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)还是文件被删除(案例3)?
  • 那么问题出在哪里?
  • @Alderven 问题是我不明白如果我从源文件夹中删除文件,如何使用 .os 从目标中删除文件..??
  • @xmojmr my code { files =os.listdir(path) } 列出目录中存在的所有文件。说文件夹一。 “尝试”检查保存在目标文件夹中的文件是否具有最新时间,如果这是真的,它会转到“除外”,它表示将文件复制到目标文件夹

标签: python operating-system shutil os.walk


【解决方案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

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

【讨论】:

  • 我们可以使用 dirsync 来同步位于两台不同主机上的两个文件夹吗?
  • @Shy Yes ,它可以。只是你需要确保你有正确的路径。在连接到本地服务器的 Mac 中,/Volumes/SomeRemoteFolder/Subfolder 通过 Go 连接服务器后可以正常工作 --> 连接到服务器 (Command + K)。
  • 这简直太壮观了!很抱歉评论它,但终于发现了一些有用的东西,可以在没有管理权限的情况下在 Windows 中完成。
  • 来自 pypi.org/project/dirsync 似乎有一个 2-way 选项可以在一个命令中实现技巧:--twoway
  • 非常感谢帕特尔先生的精彩分享。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多