python - 在 Windows 中使用 Python 下载 Mp3 会损坏歌曲,但在 Linux 中不会

标签 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()

原来它与我在 Windows 或我当前的 Python 版本上下载它有某种关系。我在我的 Ubuntu 发行版上测试了代码,mp3 文件下载得非常好......所以我只使用了简单的 urllib2.openurl方法,效果很好!

总结一下:
  • 我正在使用 urllib2.openurl在 Ubuntu 发行版上的 Python 中。
  • 我正在使用较新版本的 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/

    相关文章:

    python - Windows 中的多显示器设置的每个屏幕都有不同的墙纸

    c# - 使用 WebClient 或 HttpWebRequest 登录

    c# - 如何在 HttpWebRequest POST 中将对象作为参数传递?

    python-2.7 - 使用文本编辑器打开 MP3 文件

    android - 调用释放并播放多种声音

    python - 从类内部访问包含的静态信息的更好/正确方法

    python - 将所有零推到列表的一侧

    python - 如何合并具有来自多列的重复值的行

    asp.net - 检索 HttpWebResponse 并将其放入 XDocument 的有效方法

    c# - 纯C#开源PCM到Mp3转换器?