FTP 下载当天最新文件

问题描述 投票:0回答:1

我需要用Python连接到FTP服务器,并从五个不同的文件夹中下载今天才出现的所有文件。不需要删除文件。

我刚刚开始学习Python。我们成功连接并下载了所有文件。如何只在今天执行此操作,以便我不会下载昨天等的内容?

import ftplib
import os

ftp = ftplib.FTP('ftpserver.com')
ftp.login('user_ftp','ftp_pass')
ftp.cwd('/test/123')
filenames = ftp.nlst()

for filename in filenames:
    host_file = os.path.join(
        'C:\\test\\', filename
    )

    try:
        with open(host_file, 'wb') as local_file:
            ftp.retrbinary('RETR ' + filename, local_file.write)
    except ftplib.error_perm:
        pass

ftp.quit()
python ftp ftplib
1个回答
0
投票
import ftplib
import os
from datetime import datetime

# Параметры FTP сервера
ftp_host = 'ftp_server'
ftp_user = 'ftp_user'
ftp_password = 'ftp_pass'

# Целевая локальная папка для сохранения файлов
local_folder = 'C:\\test'

def download_files_from_ftp(ftp_folder):
    ftp = ftplib.FTP(ftp_host)
    ftp.login(ftp_user, ftp_password)
    ftp.cwd(ftp_folder)

    files = ftp.nlst()
    today = datetime.now().date()

    for file in files:
        file_time = datetime.strptime(ftp.sendcmd('MDTM ' + file)[4:], "%Y%m%d%H%M%S").date()
        if file_time == today:
            local_filename = os.path.join(local_folder, file)
            with open(local_filename, 'wb') as local_file:
                ftp.retrbinary('RETR ' + file, local_file.write)

    ftp.quit()

# Список папок для загрузки файлов
ftp_folders = ['folder1','folder2','folder3']

# Загрузка файлов из каждой папки
for folder in ftp_folders:
    download_files_from_ftp(folder)
© www.soinside.com 2019 - 2024. All rights reserved.