Как синхронизировать две папки с помощью скрипта Python - PullRequest
0 голосов
/ 14 февраля 2019

В настоящее время я работаю над проектом, в котором синхронизирую две папки.Мои папки в следующем примере называют 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+ '!')

Что я могу изменить или сделать так, чтобы я мог синхронизировать обе папкиполностью?Заранее спасибо:)

1 Ответ

0 голосов
/ 27 августа 2019

(Не тот же подход, что и у вас, но работа выполняется так, как ожидается из вашего запроса)

Простой код с использованием 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

Конечно, вы можете добавить обработку исключений вручную, если хотите.

...