在Windows中使用Python下载Mp3会破坏歌曲,但在Linux中却没有

Set*_*ron 4 python mp3 httpwebrequest web-scraping

我已经设置了一个脚本来使用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()
Run Code Online (Sandbox Code Playgroud)

事实证明它与我在Windows或我当前的Python版本上下载它有某种关系.我在我的Ubuntu发行版上测试了代码并且下载的mp3文件非常好......所以我只是使用了简单的urllib2.openurl方法,它工作得很完美!

总结一下:

  • urllib2.openurl在Ubuntu发行版上使用Python.
  • 我使用的是较新版本的Python,但我觉得它不是那样的.
  • mp3以LAME编码.

有没有人知道是什么导致在我的Windows机器上运行代码的奇怪问题?我想知道为什么在Windows上下载损坏了mp3?

Jos*_*shD 14

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

该文件是二进制文件,是的.这是没有的模式.打开文件时,可以将其设置为读取为文本文件(这是默认设置).当它这样做时,它将转换行结尾以匹配平台.在Windows上,行结束\r\n在大多数其他地方它是\r或者\n.这种变化会扰乱数据流.