Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows中使用Python下载Mp3会破坏歌曲,但在Linux中不会';T_Python_Httpwebrequest_Mp3_Web Scraping - Fatal编程技术网

在Windows中使用Python下载Mp3会破坏歌曲,但在Linux中不会';T

在Windows中使用Python下载Mp3会破坏歌曲,但在Linux中不会';T,python,httpwebrequest,mp3,web-scraping,Python,Httpwebrequest,Mp3,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() 事实

我已经在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

尝试二进制文件模式<代码>打开(mp3Name,“wb”) 你可能会得到行尾翻译


文件是二进制的,是的。这是不是模式。打开文件时,可以将其设置为作为文本文件读取(这是默认设置)。执行此操作时,它将转换线端点以匹配平台。在Windows上,行尾是
\r\n
,在大多数其他位置,行尾是
\r
\n
。这一更改会弄乱数据流。

真是疯了!我以为它已经是二进制的了,否则它就不能播放了。我以为它是默认打开的@塞瑟伦:我在答案中添加了一些细节。