概要
python には標準で ftplib というモジュールが備わっていて、それを利用してftp処理が作れます。
21.13. ftplib — FTPプロトコルクライアント — Python 3.6.1 ドキュメント
が、このftplibは、ものすごく低レイヤなAPIになってて、実際作れるのですが面倒くさいです。
さくっと書きたいので、なんか便利なライブラリないかなって探したら、やっぱりありました。
インストール
インストールは、pip で一発です。
$ pip install ftputil
残念ながら、condaの方にはなかったです。
使い方(とりあえず get と put)
ftputilのページは
で、とても分かりやすいドキュメントもあります。(英語ですがコードもあるので普通に分かります。)
自分がやりたかったのは、シンプルなgetとputだったので、以下のように書けばさくっと行けました。
ftp-get
import ftputil # --------------------------------------------- # FTPサーバーにログインしてダウンロード # --------------------------------------------- with ftputil.FTPHost(FTP_HOST, FTP_USER, FTP_PASS) as ftp: ftp.chdir(FTP_BASE_DIR) for host_file in ftp.listdir(ftp.curdir): ftp.download(host_file, f'{local_dir}/{host_file}')
ftp-put
import ftputil # --------------------------------------------- # FTPサーバーにログインしてアップロード # --------------------------------------------- with ftputil.FTPHost(FTP_HOST, FTP_USER, FTP_PASS) as ftp: ftp.chdir(FTP_UPLOAD_DIR) for local_file in os.listdir(local_dir): ftp.upload(f'{local_dir}/{local_file}', f'{local_file}')
withが使えて、osモジュールに似たメソッドがあって、downloadとuploadでサクッと行けるのがいいですね。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場