士别三日,当挖目相待 2022-03-13 23:54 采纳率: 0%
浏览 177
已结题

有了解requests下载的吗,请问下我这个下载的文件总是不全要怎么做

问题遇到的现象和发生背景

如下代码,是我写的一段下载谷歌驱动的方法。
其中需要下载内容已经处理,并写入driver_download_list.txt。可正常读取,下载目录也没问题。

但是执行的时候下载的文件总是不全,只有86kb 左右。
同样的方法如果不用线程池或for循环 批量下载就可以正常完整下载。

问题相关代码,请勿粘贴截图
@staticmethod
def download(path, url):
    """下载方法,path为包含文件名的文件路径,需要带上后缀名如.zip"""
    print(f"准备下载 {url}")
    with open(path, mode="wb") as f:
        f.write(requests.get(url).content)

@staticmethod
def down_pool_main():
    with open("./driver_download_list.txt", mode="r", encoding="utf-8") as file:
        with ThreadPoolExecutor(max_workers=5) as pool:
            for version_line in file.readlines():
                path, url = version_line.split("===")
                pool.submit(Driver_Download.download, path, url)
            pool.shutdown(wait=True)
运行结果及报错内容
我的解答思路和尝试过的方法

直接指定path和url单个下载就没问题,但是一旦用了循环或者线程池就有问题,下载位置以及文件名都对着,但是文件不完整。
尝试过网上说的 requests流式下载,也是没作用。

我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 「已注销」 2022-03-14 08:56
    关注

    你写的方法错了,w模式会覆盖前面的内容,要用a

    with open(path, mode="a") as f:
    

    a 就是append的意思,追加内容,会保留之前的

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月30日
  • 创建了问题 3月13日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上