首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中使用请求下载文件后获取损坏的mp3

在Python中使用请求下载文件后获取损坏的mp3
EN

Stack Overflow用户
提问于 2021-01-01 19:27:17
回答 2查看 656关注 0票数 0

我正在尝试使用Python语言中的requests下载mp3文件

示例url - https://example.net/song.mp3

代码语言:javascript
运行
复制
r = requests.get(downnloadLink)

with open(r"C:\Users\shrey\Desktop\test.mp3", 'wb') as f:
    f.write(r.content)
    print("Downloaded!")

正在下载该文件,但我无法播放该文件并收到此错误

它似乎没有以正确的格式下载

EN

回答 2

Stack Overflow用户

发布于 2021-01-01 19:54:50

我想你在下载html的内容。你应该检查你下载的是不是'mp3‘。因此,首先使用普通浏览器下载该文件,然后将其与使用脚本下载的文件进行比较。您可以只比较它们的散列,看看它们是否相同。

但是,如果您想要的只是一个下载mp3的脚本,您可以使用以下脚本。

代码语言:javascript
运行
复制
import requests
url = "URL FOR THE MUSIC FILE"

def DownloadFile(url):
    local_filename = 'test.mp3'
    r = requests.get(url)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024): 
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)
    return None

DownloadFile(url)
票数 1
EN

Stack Overflow用户

发布于 2021-01-01 19:39:16

问题是,Windows在使用Python下载.mp3文件时会跳过一个步骤。然而,这不是Linux会发生的事情。

要在Linux中下载.mp3文件,您需要尝试以二进制文件模式打开该文件。打开(mp3Name,"wb")你可能会得到行结束的翻译。

这个文件是二进制的,是的。当打开一个文件时,可以将其设置为以文本文件的形式读取(这是默认设置)。当它这样做时,它将转换行尾以匹配平台。在Windows上,行结束位置\r\n在大多数其他位置,它不是\r就是\n。此更改会扰乱数据流

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65529276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档