Python-FTP Holen Sie sich die aktuellste Datei nach Datum

Ich bin mit ftplib eine Verbindung zu einer ftp-site. Ich möchte das zuletzt hochgeladene Datei und laden Sie es. Ich bin in der Lage, eine Verbindung zum ftp-server und die Liste der Dateien, die ich auch haben setzen Sie Sie in einer Liste und bekam die datefield umgewandelt. Gibt es eine Funktion/Modul, kann man die jüngsten Datum und Ausgabe der ganzen Zeile aus der Liste?

#!/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','[email protected]')
    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()

GELÖST:

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

Einem problem, ist es möglich, um das erste element aus dem dictionary? was ich hier getan habe, ist, dass die for-Schleife läuft nur einmal durch und beendet damit die mir den ersten Wert sortiert, das ist in Ordnung, aber ich glaube nicht, es ist eine gute Praxis, es zu tun auf diese Weise..

  • Ist es möglich, laden Sie die neueste .csv-Datei Hinzugefügt, anstatt nur die neueste Datei im Allgemeinen?
  • FTP sendet Passwörter in Klartext. SFTP ist sicherer (FTP über SSH, pip install pysftp), aber nicht so schnell als FTPS (FTP über SSL/TLS), was so einfach ist wie mit ftplib.FTP_TLS() statt ftplib.FTP().
InformationsquelleAutor krisdigitx | 2012-01-24
Schreibe einen Kommentar