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

2011-01-27
このエントリーをはてなブックマークに追加

ファイルを別ホストへ送る処理が必要なとき、ファイルサイズが小さければ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は便利だと思います。

Tags:

Pythonで画像の貼り付け

2011-01-25
このエントリーをはてなブックマークに追加

PythonにはPIL(Python Imaging Library)という画像ライブラリがあります。非常に優秀で、画像のリサイズから貼り付けまで、とっても簡単にすることができます。もっと多くのことが出来るのですが、ここでは割愛して画像貼り付けのサンプルを。

# -*- coding: utf-8 -*-
import Image

def paste():

_bg = Image.new(“RGB”, (480, 320), (0, 0, 0))
_im = Image.open(‘cat.jpg’)

_bg.paste(_im, (80, 0))
_bg.save(‘pasted_cat.jpg’)

if __name__ == ‘__main__’:

paste()

6行目のImage.newで貼り付ける土台の画像をつくります。ここでは横480、縦320で真っ黒の画像です。で、7行目で貼り付ける画像を読み込んでいます。貼り付ける画像は縦横320pxの正方形です。

9行目で土台に画像を貼り付けていますが、ここで指定しているのは貼り付ける位置(x,y)で、横長の土台に対して画像が中央に来るように調整してます。

最後、10行目で貼り付けた画像を保存です。

実際には貼り付け津画像の縦横を計算したり、リサイズしたりという処理が必要になると思いますが、ここでは本質ではなかったのでごっそり割愛しました。サイズ取得やリサイズはまた別のタイミングで書きましょう。

Tags: