Как скачать файл через 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] Файл существует"
Обработка ошибок - это путь или есть хитрый трюк, который мне не хватает?
1 ответ
Решение
Я приземлился на следующее решение:
filenames_ftp = ftp.nlst()
filenames_loc = os.listdir("C:\\Financial Data\\")
filenames = list(set(filenames_ftp) - set(filenames_loc))