2017-01-03 10 views
1

私はフォルダで、このFTPを持っており、それは、これらのファイルが含まれていますPythonのFTPダウンロードファイル

pw201602042000.nc, 
pw201602042010.nc, 
pw201602042020.nc, 
pw201602042030.nc, 
pw201602042040.nc, 
pw201602042050.nc, 
pw201602042100.nc, 
pw201602042110.nc, 
pw201602042120.nc, 
pw201602042130.nc, 
pw201602042140.nc, 
pw201602042150.nc, 
pw201602042200.nc 

00で終わるファイルのみをダウンロードする方法?あなたはlist_of_filesとしてファイルのリストを取得し

from ftplib import FTP 

server = FTP("ip/serveradress") 
server.login("user", "password") 

server.retrlines("LIST") 
server.cwd("Folder") 

server.sendcmd("TYPE i") # ready for file transfer 
server.retrbinary("RETR %s"%("pw201602042300.nc"), open("pw", "wb").write) 
+0

)元の名前を再利用することに変更し、宛先ディレクトリの変数を用意し、ブロックを終了するときに、ファイルを確実にするためにwithブロックにopenを保護することが閉じられています彼はあなたが投稿したコードですか?あなたは 'server.retrlines(" LIST ")'から何を得るのですか?それに何もしませんか? –

+0

この質問のバリエーションが3番目または4番目に投稿されました。 – e4c5

答えて

0

、ちょうどワイルドカードに応じてファイル名を一致させるためにfnmatchを使用します。

list_of_files = server.retrlines("LIST") 
dest_dir = "." 
for name in list_of_files: 
    if fnmatch.fnmatch(name,"*00.nc"): 
     with open(os.path.join(dest_dir,name), "wb") as f: 
      server.retrbinary("RETR {}".format(name), f.write) 

(あなたが同じ"pw"出力にファイルを書いていることに注意してくださいファイル、私はトンと間違っている何

+0

コードはエラーを伴いますが、宛先ディレクトリはまだ空です。 – hananoorr

+0

'fnmatch'を呼び出す前に' name'を出力できますか?私たちはこの仕事をするだろうと確信しています! –

+0

NameError:name 'name'は、 – hananoorr

関連する問題