« [python] IronPython 1.0 Released!!! | トップページ | Re: 働いてみたいIT企業 »

2006/09/13

[python] Python Network Programming

Foundations of 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 で、次がファイル名。ファイル名はフルパスです。

|

« [python] IronPython 1.0 Released!!! | トップページ | Re: 働いてみたいIT企業 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [python] Python Network Programming:

« [python] IronPython 1.0 Released!!! | トップページ | Re: 働いてみたいIT企業 »