Как скачать файл через 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))
Другие вопросы по тегам