Python FTP最新文件

时间:2009-08-26 15:26:12

标签: python ftp

如何从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

4 个答案:

答案 0 :(得分:4)

只是做一些更正:

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

答案 1 :(得分:4)

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

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

aftpdir.getdata(aftp)

答案 2 :(得分:2)

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

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

答案 3 :(得分:0)

您可以拆分每一行并获取日期:

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

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