Загрузка Mp3 с использованием Python в Windows портит песню, но в Linux это не так - PullRequest
3 голосов
/ 07 октября 2010

Я установил скрипт для загрузки mp3 с помощью urllib2 в Python.

url = 'example.com'
req2 = urllib2.Request(url)
response = urllib2.urlopen(req2)

#grab the data
data = response.read()

mp3Name = "song.mp3"
song = open(mp3Name, "w")
song.write(data)    # was data2
song.close()

Оказывается, это каким-то образом связано со мной, загружающей его в Windows или с моей текущей версией Python.Я протестировал код в своем дистрибутиве Ubuntu, и mp3-файл загрузился отлично ... Итак, я просто использовал простой метод urllib2.openurl, и он отлично работал!

Подводя итог:

  • Я использую urllib2.openurl в Python для дистрибутива Ubuntu.
  • Я использую более новую версию Python, но мне это нравитсяне может быть так.
  • mp3 кодируются в LAME.

Кто-нибудь знает, что вызвало странную проблему при запуске кода на моем компьютере с Windows?Интересно, почему при загрузке на Windows искалеченный mp3?

1 Ответ

13 голосов
/ 07 октября 2010

Попробуйте режим двоичного файла.open(mp3Name, "wb") Вы, вероятно, получаете переводы с окончанием строки.

Файл является двоичным, да.Это режим, который не был.Когда файл открыт, его можно установить для чтения в виде текстового файла (это по умолчанию).Когда это будет сделано, он преобразует окончания строк в соответствии с платформой.В Windows конец строки равен \r\n В большинстве других мест это либо \r, либо \n.Это изменение портит поток данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...