【问题标题】:Downloading Mp3 using Python in Windows mangles the song however in Linux it doesn't在 Windows 中使用 Python 下载 Mp3 会破坏歌曲,但在 Linux 中不会
【发布时间】:2011-04-22 04:31:46
【问题描述】:

我已经设置了一个脚本来使用 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?

【问题讨论】:

    标签: python httpwebrequest mp3 web-scraping


    【解决方案1】:

    尝试二进制文件模式。 open(mp3Name, "wb") 你可能会得到换行符。

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

    【讨论】:

    • 该死!我认为它已经是二进制的,否则它不会播放。我以为它是默认开启的!
    • @Setheron:我在答案中添加了一些细节。
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 2013-02-12
    • 2016-08-03
    相关资源
    最近更新 更多