2017-03-14 5 views
0

ファイル名内の日付を含むファイルの名前が別の日に出ることがあるので、前日のタイムスタンプに基づいてファイルをダウンロードする必要があります。Pythonはファイルの日付に基づいてFTPからファイルを取得します

Windows上でIISを実行しているFTPサーバーに接続しているPython 2.7を使用します。

ここに私のコードです:

import os, time 
from ftplib import FTP 

ftp = FTP('example.com')  # connect to host, default port 
ftp.login("user", "pass") 

ftp.set_pasv('true') 
ftp.cwd('TestFolder')    # change into "TestFolder" directory 
ftp.retrlines('LIST')   # list directory contents 

ftp.quit() 

それは接続して、私は、フォルダのリストを取得することができ、それは以下のようになります。どのように、今日は03-14-17である場合

03-13-17 10:00PM     1337 X1234_20170313220001_1.zip 
03-13-17 11:00PM    279579 X1234_20170313230001_1.zip 
03-13-17 11:00PM    85477 X1234_20170313230001_2.zip 
03-14-17 01:00AM    67923 X1234_20170314010001_1.zip 
03-14-17 02:00AM    29524 X1234_20170314020001_1.zip 
03-14-17 05:00AM    16022 X1234_20170314050001_1.zip 
03-14-17 06:00AM    11272 X1234_20170314060002_1.zip 

03-13-17の日付スタンプを持つすべてのファイルをローカルフォルダにダウンロードしますか?

+0

ftputil何かを支援するためのライブラリを使用することができますすることができた場合:もし(datetime.datetime.now() - fileTimestamp(ファイル)) .days == 1:downloadFile(file) –

+0

私はあなたの擬似コードを理解していますが、ftplibを使って実装する方法はわかりません。 – Brad

答えて

0

FTPサーバーがMLSDをサポートしている場合は、以下を試すことができます。

ls = [] 

ftp.retrlines('MLSD', ls.append) 

for entry in ls: 
    print entry 

次に、内容を解析してdatetimeオブジェクトを取得し、それを比較します。

modified_date = datetime.date.fromtimestamp(entry[(entry.index('=') + 1):entry.index(';')]) 

そうしないと、あなたは、ファイル内のファイルのように、このようなhttp://ftputil.sschwarzer.net/trac

+0

私はftp.retrlines( 'MLSD')を先に調べましたが、ドキュメンテーションを調べてみましたが、FTPサーバーがMLSDをサポートしていない可能性があるため、エラーが発生しました。それはIIS上で実行されている、それは私が今知っているすべてです。 – Brad

関連する問題