pythonでFTPする
サーバ間のファイル転送など、保守作業で安全が確保されている場合にFTPを利用している。
保守作業も定期的な保守となると、pythonスクリプトが役に立つ。
FTPサーバに接続
1 2 3 | import ftplib ftp = ftplib.FTP('ftp-server') ftp.login('ftp-user', 'ftp-password') |
ftp-server,ftp-user,ftp-passwordは適宜書き換える。
FTPサーバへファイルを転送
1 2 3 4 5 | 'カレントディレクトリを移動' ftp.cwd('/path/to/data_dir') 'ファイルを開き転送' with open('target_file.dat', 'rb') as rb: ftp.storbinary('STOR target_file.dat', rb) |
クライアントファイルは、openの引数で深いディレクトリでもディレクトリを移動せずに指定できる。
サーバファイルは、cwdにディレクトリを移動してから個別に転送する。
FTPサーバからファイルを取得
1 2 3 4 5 | 'カレントディレクトリを移動' ftp.cwd('/path/to/data_dir') 'ファイルを取得し保存' with open('target_file.dat', 'wb') as wb: ftp.retrbinary('RETR target_file.dat', wb.write) |
サーバファイルは、cwdでディレクトリを移動してから個別に取得する。
クライアントファイルは、openの引数で深いディレクトリでもディレクトリを移動せずに指定できる。
FTPサーバから切断
1 | ftp.quit() |
まとめ
ftpコマンドにテキストファイルを渡してバッチ処理してもよいが、Pythonで作った方が応用が効いて良いと思う。
2018.9.15 FTP送信のコマンドが間違っていました。FTP送信はRETRではなくSTORが正解です。
mae8bitさん、ご指摘ありとうございました。
同じタグの記事
- BOM付きUTF-8からBOMを除去するpython
- jythonのヒープメモリ設定
- Kotlin1.2.50がリリースされていた
- macOSをHigh Sierraに更新した。スクリプト実行環境のバージョンは変わったのか
- macOSをMojaveに更新した。スクリプト実行環境のバージョンは変わったか
- pathlib.Pathを調べる
- pyenvでpython環境をインストール
- pyenvとvirtualenvでpython環境を構築
- python unpack
- python3で数値のlistを文字列のlistに変換
同じカテゴリの記事
参考になりました。
一点気づいたことが。FTPサーバへファイルを転送のFTPコマンドはRETRじゃなくてSTORですね。
コメントありがとうございました。
間違えていました。申し訳ございません。