2016-08-16 2 views
0

Итак, я загружаю некоторые файлы данных с ftp-сервера. Мне нужно ежедневно входить и получать новые файлы и сохранять их на своем компьютере, но только новые.Как загрузить файл по FTP и сохранить его локально, только если он еще не существует?

код до сих пор:

from ftplib import FTP 
import os 

ftp = FTP('ftp.example.com') 
ftp.login() 
ftp.retrlines('LIST') 
filenames = ftp.nlst() 

for filename in filenames: 
    if filename not in ['..', '.']: 
     local_filename = os.path.join('C:\\Financial Data\\', filename) 
     file = open(local_filename, mode = 'x') 
     ftp.retrbinary('RETR '+ filename, file.write) 

Я думал об использовании if not os.path.exists(), но мне нужно os.path.joint для этой работы. Используя open() с mode = 'x', как указано выше, я получаю следующее сообщение об ошибке: «FileExistsError: [Errno 17] Файл существует»

Ошибка обработки пути, или есть опрятный трюк, который я Не хватает?

ответ

0

я приземлился на следующее решение:

filenames_ftp = ftp.nlst() 
filenames_loc = os.listdir("C:\\Financial Data\\") 
filenames = list(set(filenames_ftp) - set(filenames_loc)) 
Смежные вопросы