проблема заключается в следующем:
У меня есть локальный каталог '/local' и удаленный FTP-каталог '/remote', полный подкаталогов и файлов. Я хочу проверить, есть ли новые файлы в подкаталогах '/remote'. Если они есть, скопируйте их в '/local'.
вопрос:
Я использую правильную стратегию? Является ли это излишним, и есть ли более быстрый питонический способ сделать это? ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я питон n00b, пытающийся учиться. Так что будьте нежны... =) Вот что я пробовал:
Создайте список всех файлов в /local и его подкаталогах.
LocalFiles=[]
for path, subdirs, files in os.walk(localdir):
for name in files:
LocalFiles.append(name)
Поколдуйте с ftplib, используя ftpwalk() и копирование его результатов в список вида:
RemoteFiles=[['/remote/dir1/','/remote/dir1/','/remote/dir3/'],['file1.txt','file12.py','file3.zip']]
поэтому у меня есть каталог, соответствующий каждому файлу. Затем посмотрите, какие файлы отсутствуют, сравнив списки имен файлов,
missing_files= list(set(RemoteFiles[1]) - set(LocalFiles))
и как только я найду их имя, я попытаюсь найти каталог с этим именем,
for i in range(0,len(missing_files)):
theindex=RemoteFiles[1].index(missing_files[i])
который позволяет мне составить список отсутствующих файлов и их каталогов,
MissingDirNFiles.append([remotefiles[0][theindex],remotefiles[1][theindex]])
поэтому я могу скопировать их с помощью ftp.retrbinary. Это разумная стратегия? Приветствуются любые советы, комментарии и советы [особенно для большого количества файлов].