【问题标题】:Download file using requests python使用请求 python 下载文件
【发布时间】:2021-08-06 09:27:12
【问题描述】:

我有一个作为下载对话框打开的文件的 URL 列表,其中包含保存和打开选项。 我正在使用 python 请求模块来下载文件。在使用 Python IDLE 时,我可以使用以下代码下载文件。

link = fileurl
r = requests.get(link,allow_redirects=True)
with open ("a.torrent",'wb') as code:
    code.write(r.content)

但是当我将此代码与 for 循环一起使用时,下载的文件已损坏或无法打开。

for link in links:
    name = str(links.index(link)) ++ ".torrent"
    r = requests.get(link,allow_redirects=True)
    with open (name,'wb') as code:
        code.write(r.content)

【问题讨论】:

  • 在写入文件之前检查请求的状态。
  • 我认为这与您正在使用的其他组件有关。您能否更清楚/完整地描述一下这段代码 sn-p 周围的环境?
  • 因为你一次又一次地重写同一个文件
  • @rdas 我得到的状态码是 200
  • @NikolayPatarov 我试过写差异文件名。但它没有帮助

标签: python for-loop download python-requests torrent


【解决方案1】:

正如@Nikolay Patarov 在 cmets 中指出的那样,您一次又一次地重写同一个文件。要解决此问题,您可以将内容保存在不同的文件中,如下所示:

for i,link in enumerate(links):
    r = requests.get(link,allow_redirects=True)
    with open(f"a{i}.torrent","wb") as code:
        code.write(r.content)
        code.close()

在这里,我只是将所有链接的内容保存在不同的文件中。

【讨论】:

  • 添加code.close()并没有改变什么,结果还是一样。
  • 请检查我已经编辑了我的答案,也很抱歉最后一个答案。
  • 为什么来自许多不同链接的连接内容会是一个有效的种子文件?
  • 每个链接都是不同的文件不能将每个链接连接成一个
  • 我已经对其进行了编辑,以便将链接中的内容保存在不同的文件中。
【解决方案2】:

如果您尝试从网站下载视频,请尝试

r = get(video_link, stream=True)
with open ("a.mp4",'wb') as code:
    for chunk in r.iter_content(chunk_size=1024):
        file.write(chunk)                

【讨论】:

  • 不是流文件,是“.torrent”文件
  • 这并不重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2021-08-21
  • 2017-10-20
相关资源
最近更新 更多