如何从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
答案 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
函数)以获得可比较的对象。