pythonでFTP

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さん、ご指摘ありとうございました。

同じタグの記事
同じカテゴリの記事

“pythonでFTP” への2件の返信

  1. 参考になりました。
    一点気づいたことが。FTPサーバへファイルを転送のFTPコマンドはRETRじゃなくてSTORですね。

  2. コメントありがとうございました。
    間違えていました。申し訳ございません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA