PythonでFTPを使ったファイル転送をする方法

ファイルを別ホストへ送る処理が必要なとき、ファイルサイズが小さければhttpでPOSTしたりしちゃいます。が、ログファイルとかの大きなサイズのものを転送するにはhttpだとタイムアウトになったりするケースもあり、やっぱりそういうときはFTPが便利です。

まぁ「SCPしろよ」というのもごもっともです。w

#!/usr/bin/python
# -*- coding: utf-8 -*-

from ftplib import FTP

def main():

print “start.”
_ftp = FTP(‘ftpサーバ名’)
_ftp.login(”)

print _ftp.retrlines(‘LIST’)

_file = open(‘target_file.zip’, ‘rb’)
_ftp.cwd(‘/target_dir/’)
_ftp.storbinary(‘STOR target_file.zip’, _file)
_file.close()

_ftp.quit()

if __name__ == ‘__main__’:

main()

10行目でログインしてますが、この例だとanonymousでのログインです。ユーザアカウントとパスワードが必要な場合、

_ftp.login(‘ユーザアカウント’, ‘パスワード’)

になります。

12行目は「ファイル一覧はこうやって取り出せますよ」のサンプルなだけです。ファイル転送処理には関係ないです。

で、14行目から。バイナリファイルを転送するのでバイナリモードで読み込みます。テキストファイルの転送ならオプションは「r」でOKです。テキストファイルの場合、「storbinary」ではなく「storlines」になります。

15行目でディレクトリを変更してますが、ルートディレクトリにファイルを転送したいならここは不要です。

追加モジュールなしでこんなに簡単にできてしまうのですから、やはりPythonは便利だと思います。