我已经设置了一个脚本,可以在Python中使用urllib2下载mp3。

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方法,就可以完美运行!

总结一下:
  • 我正在Ubuntu发行版上的Python中使用urllib2.openurl
  • 我使用的是Python的较新版本,但我觉得不可能那样做。
  • mp3以LAME编码。

  • 有谁知道是什么原因导致在Windows框上运行代码的奇怪问题?我不知道为什么在Windows上下载时会破坏mp3?

    最佳答案

    尝试二进制文件模式。 open(mp3Name, "wb")您可能正在获得行尾翻译。

    该文件是二进制的,是的。不是这种模式。打开文件时,可以将其设置为作为文本文件读取(默认设置)。执行此操作时,它将转换行尾以匹配平台。在Windows上,行尾是\r\n。在大多数其他地方,它是\r\n。此更改使数据流困惑。

    关于python - 在Windows中使用Python下载Mp3会破坏歌曲,但是在Linux中则不会,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3878882/

    10-15 03:52