Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python脚本同步两个文件夹_Python_Operating System_Shutil_Os.walk - Fatal编程技术网

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

如何使用python脚本同步两个文件夹,python,operating-system,shutil,os.walk,Python,Operating System,Shutil,Os.walk,目前,我正在一个项目中同步两个文件夹。下面示例中的我的文件夹将ad文件夹_1命名为源并将文件夹_2命名为目标我要执行以下操作 如果文件夹_1中存在的文件在文件夹_2中不存在, 将文件从文件夹_1复制到文件夹_2,反之亦然 如果重命名任一文件夹中的任何文件,它将在另一个文件夹中更新,而不是复制具有更新名称的新文件 如果我从任何文件夹中删除任何文件,它也应该从其他文件夹中删除 我已经完成了第一点的一半,我可以将文件从文件夹_1复制到文件夹_2。我可以将文件从文件夹_2复制到文件夹_1的发送部分仍然存

目前,我正在一个项目中同步两个文件夹。下面示例中的我的文件夹将ad文件夹_1命名为源并将文件夹_2命名为目标我要执行以下操作

  • 如果文件夹_1中存在的文件在文件夹_2中不存在, 将文件从文件夹_1复制到文件夹_2,反之亦然
  • 如果重命名任一文件夹中的任何文件,它将在另一个文件夹中更新,而不是复制具有更新名称的新文件
  • 如果我从任何文件夹中删除任何文件,它也应该从其他文件夹中删除 我已经完成了第一点的一半,我可以将文件从文件夹_1复制到文件夹_2。我可以将文件从文件夹_2复制到文件夹_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+ '!')
    
    导入操作系统,shutil
    路径='C:/Users/saqibshakeel035/Desktop/Folder_1/'
    copyto='C:/Users/saqibshakeel035/Desktop/Folder_2/'
    files=os.listdir(路径)
    files.sort()文件
    对于文件中的f:
    src=路径+f
    dst=copyto+f
    尝试:
    如果os.stat(src).st_mtime
    我可以修改或执行哪些操作,以便完全同步这两个文件夹? 提前感谢:)

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

    使用
    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
    
    有关更多选项,请参见此处的文档:


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

    您如何知道是否有文件丢失(案例1)或文件被删除(案例3)?那么问题出在哪里?@Alderven的问题是,如果我从源文件夹中删除文件,我不明白如何使用.os从目标中删除文件。?@xmojmr我的代码{files=os.listdir(path)}列出目录中存在的所有文件。比如说文件夹一。“Try”检查保存在目标文件夹中的文件是否有最新时间,如果这是真的,则转到“except”其中说明要将文件复制到目标文件夹我们可以使用dirsync同步位于两台不同主机上的两个文件夹吗?@Shy是的,它可以。只需确保路径正确。在连接到本地服务器的Mac中,
    /Volumes/SomeRemoteFolder/Subfolder
    通过Go-->Connect t连接服务器后工作正常o服务器(
    Command+K
    )。这真是太棒了!很抱歉评论它,但最终发现在没有管理权限的情况下,在windows中可以做一些有用的事情。从这一点上看,似乎有一个双向选项可以在一个命令中实现这一技巧:--twoway非常感谢您的精彩分享M.Patel。