2011-01-03 22 views
1

ちょっと、私はプログラミングに慣れていないので、Python Challengeに問題があります。重いスポイラーを避けるために正確なURLを削除しました。予期せぬアーカイブの終わり

とにかく、私の問題は、私が作成したファイルをWinRARで開いてみようとしていて、次のコードを実行した後に、ファイルが "予期しないアーカイブの終了"をしていることです。もちろん、私はコードをいくつかの場合に備えて再実行しようとしましたが、まだ運がありません。

同じURLからブラウザでファイルを取得して、ファイル自体が壊れていないことを確認し、エラーなしでオープンしたので、私はかなり困惑しています。私はプロセスのいくつかの基本的な要素が欠けていると思いますか?

ご協力いただきありがとうございます。

import urllib 

url = "http://www.pythonchallenge.com/pc/def/xxxxxxx.zip" 
site = urllib.urlopen(url) 

newfile = open(url.split('/')[-1],'w')  

newfile.write(site.read()) 

site.close() 
newfile.close() 
+0

[this so answer](http://stackoverflow.com/questions/4028697/how-do-i-download-a-zip-file -in-python-using-urllib2)あなたが探しているものですか? –

答えて

3

あなたはWindowsマシンを使用していると思います。 (主に起因する「WinRARの」へ)

newfile = open(url.split('/')[-1],'w') 

'w'は書き込みのためにファイルを開きますが、「テキスト」モードインチテキストモードでは、Windowsなどの一部のOSは'\n'を別のもの(Windowsの場合は'\r\n')に変換します。この翻訳を回避するために、書き込み'w'で、バイナリモード'b'でファイルを開く:'wb'

これらの文字はfopenから派生。 See the manual page for fopen、私はそれがPython docsよりもフラグのより良い説明を持っていると感じています。 (ただし、Pythonはフラグにいくつかの要素を追加しています)。

+0

ありがとう、これは動作するはずです! – TankorSmash

関連する問題