2011-08-08 10 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) 

をしかし:このコードでは、私が唯一の倍数を取得"解析に失敗しました"、また "更新されたファイル" - 印刷物を倍数にします。しかし、今日更新されたファイル/ディレクトリのファイル/ディレクトリ名が必要です。 "##### CODE HERE #######"に貼り付けるコードは何ですか?ディレクトリ名を取得するには?

答えて

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

retrlines()ではなく、nlst()を使用してファイル名を取得します。

あなたのファイル名に空白がないとは思いません。

関連する問題