Python FTP получает самый последний файл по дате

Я использую ftplib для подключения к ftp-сайту. Я хочу получить последний загруженный файл и загрузить его. Я могу подключиться к ftp-серверу и вывести список файлов, я также поместил их в список и преобразовал поле даты . Есть ли какая-либо функция / модуль, который может получить последнюю дату и вывести всю строку из списка?

#!/usr/bin/env python

import ftplib
import os
import socket
import sys


HOST = 'test'


def main():
    try:
        f = ftplib.FTP(HOST)
    except (socket.error, socket.gaierror), e:
        print 'cannot reach to %s' % HOST
        return
    print "Connect to ftp server"

    try:
        f.login('anonymous','al@ge.com')
    except ftplib.error_perm:
        print 'cannot login anonymously'
        f.quit()
        return
    print "logged on to the ftp server"

    data = []
    f.dir(data.append)
    for line in data:
        datestr = ' '.join(line.split()[0:2])
        orig-date = time.strptime(datestr, '%d-%m-%y %H:%M%p')


    f.quit()
    return


if __name__ == '__main__':
    main()

РЕШЕНИЕ:

data = []
f.dir(data.append)
datelist = []
filelist = []
for line in data:
    col = line.split()
    datestr = ' '.join(line.split()[0:2])
    date = time.strptime(datestr, '%m-%d-%y %H:%M%p')
    datelist.append(date)
    filelist.append(col[3])

combo = zip(datelist,filelist)
who = dict(combo)

for key in sorted(who.iterkeys(), reverse=True):
   print "%s: %s" % (key,who[key])
   filename = who[key]
   print "file to download is %s" % filename
   try:
       f.retrbinary('RETR %s' % filename, open(filename, 'wb').write)
   except ftplib.err_perm:
       print "Error: cannot read file %s" % filename
       os.unlink(filename)
   else:
       print "***Downloaded*** %s " % filename
   return

f.quit()
return

Одна проблема: можно ли получить первый элемент из словаря? что я сделал здесь, так это то, что цикл for запускается только один раз и завершается, тем самым давая мне первое отсортированное значение, и это нормально, но я не думаю, что это хорошая практика делать это таким образом ..

9
задан Martin Prikryl 27 June 2018 в 06:38
поделиться