1kバイトの画像しかダウンロードしない理由を誰か教えてもらえますか(を使用した場合と同じ問題urlretrieve()
)? 画像のサイズはそれよりもはるかに大きいです。
f = open('00000001.gif','wb')
f.write(urllib.urlopen('http://gifs.gifbin.com/082013/tn_1378920172_decapitated_snake_bites_itself.gif').read())
f.close()
ネットワークまたは取得しようとしている URL を確認する必要があります。Python は EOF に達するまで結果ソケットから読み取ります。そのため、予想よりも少ないデータが得られた場合は、不完全な応答が送信されたか、ネットワークが応答を短くしたか (プロキシ サーバー、ファイアウォール、what-have-you)、またはあなたの仮定のいずれかです。その URL に対してサーバーが送信する内容が間違っています。
shutil.copyfileobj()
また、あなたのために読書をするために使用したい:
from shutil import copyfileobj
im = urllib.urlopen('http://gifs.gifbin.com/082013/tn_1378920172_decapitated_snake_bites_itself.gif')
with open('00000001.gif', 'wb') as out:
copyfileobj(im, out)
これにより、チャンクでのデータの読み取りが処理されるだけでなく、ブートするバイナリ データの大きなブロブでメモリがいっぱいになるのを回避できます。このwith
ステートメントは、ファイル オブジェクトを閉じる処理を行います。