Python FTP按日期获取最新文件

前端之家收集整理的这篇文章主要介绍了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循环只运行一次并退出,从而给我第一个排序的值,这很好,但我不认为这样做是一个好习惯..

解决方法

如果你在列表中有 time.struct_time( strptime将给你这个)的所有日期,那么你所要做的就是对列表进行排序.

这是一个例子:

#!/usr/bin/python

import time

dates = [
    "Jan 16 18:35 2012","Aug 16 21:14 2012","Dec 05 22:27 2012","Jan 22 19:42 2012","Jan 24 00:49 2012","Dec 15 22:41 2012","Dec 13 01:41 2012","Dec 24 01:23 2012","Jan 21 00:35 2012","Jan 16 18:35 2012",]

def main():
    datelist = []
    for date in dates:
        date = time.strptime(date,'%b %d %H:%M %Y')
        datelist.append(date)

    print datelist
    datelist.sort()
    print datelist

if __name__ == '__main__':
    main()
原文链接:https://www.f2er.com/python/186288.html

猜你在找的Python相关文章