[python] Python Network Programming

ネットワークプログラミングなんてやったこともないのにいきなり Twisted Essensial を読んで自爆。やはり基礎から順番に勉強する必要がありますね。ネットワークプログラミングの基礎を勉強するにはどれがいいのか、お勧めを聞いて Foundations of Python Network Programming でまず勉強することにしました。が、いきなりちょっと問題があるコード発見。コードは chapter1 の download.py
import urllib, sys
f = urllib.urlopen( sys.argv[1] )
while 1:
buf = f.read( 2048 )
if not len( buf ):
break
sys.stdout.write( buf )
Windows ではそのまま実行することはできませんし ( gunzip を自前でコンパイルする必要あり )、Cygwin でも 「 more なんてコマンドないよ!」とエラーが出てしまいます。 more なんてなくても実行できることはできるのですが、動作が果てしなく重くなる。そもそも、このコードではダウンロードしたファイルは画面に出力することが前提になっているのでファイルとして保存することができません。なんとなく気になります。ということで書き直してみました。
# simply download client
# this script require exactly two arguments.
# first argument is URL and second argument is file.
import urllib, sys
f = urllib.urlopen( sys.argv[1] )
d = file( sys.argv[2], 'wb')
while 1:
buf = f.read( 2048 )
if not len( buf ):
break
d.write( buf )
d.close()
コマンドライン引数は2つ必要になります。一つ目が URL で、次がファイル名。ファイル名はフルパスです。
| 固定リンク
この記事へのコメントは終了しました。
コメント