2011-08-08 40 views
1

我需要讓我的FTP服務器(今天更新)上最新的文件/目錄,我發現這個解決方案:Python中得到新的文件FTP

def callback(line): 
    try: 
     #only use this code if you'll be dealing with that FTP server alone 
     #look into dateutil module which parses dates with more flexibility 
     when = datetime.strptime(re.search('[A-z]{3}\s+\d{1,2}\s\d{1,2}:\d{2}', line).group(0),  "%b %d %H:%M") 
     today = datetime.today() 
     if when.day == today.day and when.month == today.month: 
      pass 
      print "Updated file" 
      #####THE CODE HERE####### 
    except: 
     print "failed to parse" 
     return 

ftp.retrlines('LIST', callback) 

但是:有了這個代碼,我只得到數倍「解析失敗」,也是倍數「更新文件」 - 印記。但是我需要今天更新文件/目錄的文件/目錄名稱。什麼是代碼粘貼在「#####這裏代碼#######」 - 部分獲取目錄名?

回答

1

查看Python ftplib的documentation,它看起來像來自retrlines()的輸出將是文件名稱是最後一個「列」的行。

-rw-r--r-- 1 ftp-usr pdmaint  5305 Mar 20 09:48 INDEX 

所以簡單的拆分和獲取最後一個字段應該工作。但是,只有在文件/文件夾名稱中沒有空白字符的情況下才能工作。

name = line.split()[-1] 
print(name) # Should be "INDEX" 

如果您想處理名稱中帶有空格的名稱,則可能需要使用更復雜的解析。

1

使用nlst()來獲取文件名,而不是retrlines()

我不會認爲你的文件名沒有空格。