Python to download file from FTP Server if file has been added into FTP server in last N hour ago?

Question:

Can you please help with download file from FTP server if file has been added into last 12 hours ago, currently I’m able to download latest file from FTP server, but not sure how to add logic for last 12 hours ago if files has been added into ftp server

import csv
from ftplib import FTP
import os
import time,glob
from datetime import datetime,timedelta

list_of_file =glob.glob(".*csv*")
latest_file = max(list_of_file, key=os.path.getatime,default=None)
filename = os.path.basename('latest_file')
ftp = FTP(host='hostname')
ftp.login(user='username',passwd='pass')
ftp.cwd("Inbox")
names = ftp.nlst()

finale_names = [line for line in names if 'restaurant file' in line]

latest_time = None
latest_name = None
for name in finale_names:
        time_1 = ftp.sendcmd("MDTM " + name)
        if (latest_time is None) or (time_1 > latest_time):
                latest_name = name
                latest_time = time_1
print(latest_name)

if latest_name==filename:
        print("No new file available in the FTP server")
else:
        
        print(latest_name," is available for downloading...")
        with open("C:Filesrestaurant \" + latest_name, 'wb') as f:
            ftp.retrbinary('RETR '+ latest_name, f.write)
        print("filehasbeendownload")
Asked By: Stark

||

Answers:

Calculate the time threshold. Parse the times returned by MDTM. And compare:

n = 4
limit = datetime.now() - timedelta(hours=n)

for name in finale_names:
    resp = ftp.sendcmd("MDTM " + name)
    # extract "yyyymmddhhmmss" part of the 213 response
    timestr = resp[4:18]
    time = datetime.strptime(timestr, "%Y%m%d%H%M%S")
    if time > limit:
        # Download

Though if your server supports MLSD command, you better use that, instead of inefficiently calling MDTM for each and every file:
Download only yesterday's file with FTP in Python

Or you can use LIST. For understanding ways of retrieving file timestamps, see:
How to get FTP file's modify time using Python ftplib

Answered By: Martin Prikryl
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.