В настоящее время я работаю над проектом, в котором синхронизирую две папки. Мои папки в следующем примере называются объявлениями Папка_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+ '!')
Что я могу изменить или сделать, чтобы полностью синхронизировать обе папки? Заранее спасибо :)
Так в чем проблема?
@Alderven проблема в том, что я не понимаю, как можно использовать .os для удаления файлов из места назначения, если я удалю файл из исходной папки ..??
@xmojmr мой код {files =os.listdir(path)} перечисляет все файлы, присутствующие в каталоге. Скажи Папка один. «Попробовать» проверяет, что файл, сохраненный в папке «Назначение», имеет самое последнее время, и если это правда, он переходит к «кроме», где говорится, что нужно скопировать файл в папку назначения.






(Не тот же подход, что и у вас, но он выполняет работу, как и ожидалось от вашего запроса)
Простой код с использованием 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
Дополнительные параметры см. в документации здесь: дирсинк — PyPI
Вы можете, конечно, добавить обработку исключений вручную, если хотите.
Можем ли мы использовать dirsync для синхронизации двух папок, лежащих на двух разных хост-компьютерах?
@Shy да, может. Просто вам нужно убедиться, что вы правильно указали пути. На Mac, подключенном к локальному серверу, /Volumes/SomeRemoteFolder/Subfolder работает нормально после подключения к серверу через Go -> Connect to Server ( Command + K).
Это просто величественно! извините за комментарий, но, наконец, нашел что-то полезное, что можно сделать в Windows, когда у вас нет прав администратора.
Из pypi.org/project/dirsync кажется, что есть двусторонний вариант, чтобы сделать трюк одной командой: --twoway
Большое спасибо за этот удивительный обмен, М. Патель.
Можно ли реализовать индикатор выполнения или что-то, чтобы показать ход процесса?
Как узнать, отсутствует ли файл (случай 1) или файл был удален (случай 3)?