开发者

Python get recent files FTP [duplicate]

开发者 https://www.devze.com 2023-03-26 09:50 出处:网络
This question already has answers here: Python FTP get the most recent file by date (5 answers) Closed 5 years ago.
This question already has answers here: Python FTP get the most recent file by date (5 answers) Closed 5 years ago.

I need to get the newest files/directory on my FTP server (updated today), I've discovered this solution:

def callback(line):
    try:
        #only use this code if you'll be dealing with that FTP server alone
        #look into dateutil module which parses dates with more flexibility
        when = datetime.strptime(re.search('[A-z]{3}\s+\d{1,2}\s\d{1,2}:\d{2}', line).group(0),     "%b %d %H:%M")
        today = datetime.today()开发者_Python百科
        if when.day == today.day and when.month == today.month:
            pass
            print "Updated file"
            #####THE CODE HERE#######
    except:
        print "failed to parse"
        return

ftp.retrlines('LIST', callback)

BUT: With this code, I only get multiples "failed to parse" and also multiples "Updated file"-prints. But I need the file/directory name of the file/directory updated today. What is the code to paste in the "#####THE CODE HERE#######"-part to get the directoryname?


Looking at the documentation for the Python ftplib, it looks like the output from retrlines() will be a line where the file name is the last "column".

-rw-r--r--   1 ftp-usr  pdmaint     5305 Mar 20 09:48 INDEX

So a simple split and getting the last field should work. It will however only work if there are no white-space characters in the file/folder name.

name = line.split()[-1]
print(name) # Should be "INDEX"

You might want to employ a more sophisticated parsing if you want to handle names with white-spaces in them.


Use nlst() to get file names, not retrlines().

I would not assume that your filenames have no whitespace.

0

精彩评论

暂无评论...
验证码 换一张
取 消