Неожиданный конец архива - PullRequest
1 голос
/ 03 января 2011

Привет, я довольно новичок в программировании, и у меня возникла проблема с 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()

1 Ответ

3 голосов
/ 03 января 2011

Полагаю, вы работаете на Windows-машине.(В основном из-за «WinRAR»)

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

'w' открывает файл для записи, но в «текстовом» режиме.В текстовом режиме некоторые ОС (например, Windows) конвертируют '\n' во что-то другое ('\r\n' в случае Window.).Чтобы избежать этого перевода, откройте файл в двоичном режиме 'b' с записью 'w': 'wb'

Эти буквы происходят от fopen. См. Справочную страницу для fopen, так как я считаю, что она имеет лучшее описание флагов, чем Документы Python .(Обратите внимание, что Python добавляет несколько вещей к флагам.)

...