Python FTP 最近文件
我该如何从FTP目录列表中找出最近修改的文件?我在本地使用了最大值函数来处理Unix时间戳,但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 个回答
2
要解析日期,你可以使用(从2.5版本开始):
datetime.datetime.strptime('Mar 21 14:32', '%b %d %H:%M')
4
如果你的FTP服务器支持MLSD
这个命令(很可能是支持的),你可以使用来自那个回答中的FTPDirectory
类。
首先,创建一个ftplib.FTP
的实例(比如叫做aftp),然后创建一个FTPDirectory
的实例(比如叫做aftpdir)。接着,连接到服务器,使用.cwd
进入你想要的目录,然后通过aftpdir.getdata(aftp)
来读取文件。完成这些后,你就可以得到最新文件的名字,方法如下:
import operator
max(aftpdir, key=operator.attrgetter('mtime')).name
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