2009-08-26 72 views
3

如何從ftp目錄列表中確定最近修改的文件?我在本地使用了unix時間戳上的max函數,但是ftp列表很難解析。每行的內容僅由一個空格分隔。Python 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

的可能的複製[蟒蛇FTP獲得通過日期最近的文件(https://stackoverflow.com/questions/8990598/python-ftp-get -THE-最近期的文件,按日期) – 2017-08-08 08:23:46

回答

0

您可以分割每行和獲取日期:

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

然後解析日期(檢查出的eGenix mxDateTime包,特別是DateTimeFromString功能)得到可比的對象。

2

要解析的日期,你可以使用(從2.5版本起):

datetime.datetime.strptime('Mar 21 14:32', '%b %d %H:%M') 
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 
4

如果FTP服務器支持MLSD命令(很可能它),您可以在相關問題中使用FTPDirectorythat答案。

創建ftplib.FTP實例(例如AFTP)和FTPDirectory實例(例如aftpdir),連接到服務器,.cwd到你想要的目錄,並使用aftpdir.getdata(aftp)讀取文件。在那之後,你會得到最新鮮的文件的名稱:

import operator 

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