2012-04-23 4 views
2

リモートサーバー上のファイルのサイズは通常、content-lengthヘッダーによって報告されますが、信頼性はありません。ときどきそれが行方不明になったり、時には誤って報告されることもあります。私はこのヘッダーに依存して、自分のコードがURLをダウンロードすべきかどうかを判断したくありません。Python:ファイルダウンロードが大きすぎる場合に終了する

ダウンロードしたファイルのサイズを監視し、最大サイズを超えた場合にダウンロードを終了する方法はありますか?

答えて

4

あなたができることは、あなたが望む最大ファイルサイズを読んでから、もう1回読むことでより多くのバイトが読み込まれるかどうかを確認することです。このように:

resp = urllib2.urlopen('http://www.google.com') 
file_read = resp.read(max_wanted_size) 
if resp.read(1) != '': 
    #file is bigger than expected code 
+0

これは 'max_wanted_size'の読み込みを強制します。 EOF *または* 'max_wanted_size'に読み込む方法はありませんか? – knutole

+2

EOFまたは 'max_wanted_size'まで読み込みます。 –