【问题标题】:Python FTP Most Recent File [duplicate]Python FTP最新文件[重复]
【发布时间】:2009-08-26 15:26:12
【问题描述】:

如何从 ftp 目录列表中确定最近修改的文件?我在本地的 unix 时间戳上使用了 max 函数,但是 ftp 列表更难解析。每一行的内容只用空格隔开。

from ftplib import FTP
ftp = FTP('ftp.cwi.nl')
ftp.login()
data = []
ftp.dir(data.append)
ftp.quit()
for line in data:
    print line

输出:

drwxrwsr-x   5 ftp-usr  pdmaint     1536 Mar 20 09:48 .
dr-xr-srwt 105 ftp-usr  pdmaint     1536 Mar 21 14:32 ..
-rw-r--r--   1 ftp-usr  pdmaint     5305 Mar 20 09:48 INDEX

【问题讨论】:

    标签: python ftp


    【解决方案1】:

    只是做一些更正:

    date_str = ' '.join(line.split()[5:8])
    time.strptime(date_str, '%b %d %H:%M') # import time
    

    并找到最近的文件

    for line in data:
        col_list = line.split()
        date_str = ' '.join(line.split()[5:8])
        if datePattern.search(col_list[8]):
            file_dict[time.strptime(date_str, '%b %d %H:%M')] = col_list[8]
            date_list = list([key for key, value in file_dict.items()])
    s = file_dict[max(date_list)]
    print s
    

    【讨论】:

      【解决方案2】:

      如果 FTP 服务器支持MLSD 命令(很有可能支持),您可以在相关问题中使用来自that 答案的FTPDirectory 类。

      创建一个ftplib.FTP 实例(例如aftp)和一个FTPDirectory 实例(例如aftpdir),连接到服务器,.cwd 到您想要的目录,然后使用aftpdir.getdata(aftp) 读取文件。之后,您将获得最新文件的名称:

      import operator
      
      max(aftpdir, key=operator.attrgetter('mtime')).name
      

      【讨论】:

        【解决方案3】:

        要解析日期,您可以使用(从 2.5 版开始):

        datetime.datetime.strptime('Mar 21 14:32', '%b %d %H:%M')
        

        【讨论】:

          【解决方案4】:

          你可以分割每一行并获取日期:

          date_str = ' '.join(line.split(' ')[5:8])
          

          然后解析日期(查看 egenix mxDateTime 包,特别是 DateTimeFromString 函数)以获取可比较的对象。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2021-11-22
            • 2012-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多