Python FTP 最近文件

4 投票
4 回答
7695 浏览
提问于 2025-04-15 13:53

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

撰写回答