You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python下载写入文件时如何在终端打印圆点等进度反馈提示

实现方案

你当前的写法是一次性将整个文件加载到内存后再写入磁盘,没有中间过程可以插入进度提示,我们可以通过requests的流式下载能力实现逐块下载,每下载一块就追加打印一个圆点即可。

核心修改点

  • 给requests.get添加stream=True参数,开启流式下载,避免一次性加载全量文件内容
  • 迭代res.iter_content逐块读取响应内容,每写一块就打印一个圆点
  • 打印圆点时关闭自动换行、强制刷新输出缓冲区,保证圆点逐次追加在同一行

完整示例代码

import requests
import os

# 提前创建downloads目录,避免写入时报路径不存在错误
os.makedirs("./downloads", exist_ok=True)

url_to_file = "替换为你的文件下载链接"
file_name = "替换为你要保存的文件名"

# 开启流式下载
res = requests.get(url_to_file, stream=True)
# 先打印前缀,不换行
print("Downloading file ", end="", flush=True)

with open(f"./downloads/{file_name}", 'wb') as f:
    # 每次读取1024字节,可根据需求调整块大小,块越小圆点刷新越频繁
    for chunk in res.iter_content(chunk_size=1024):
        if chunk: # 过滤掉空的心跳块
            f.write(chunk)
            # 打印圆点,不换行立即刷新输出
            print(".", end="", flush=True)

# 全部写完后换行打印完成提示
print("\nDone!")

效果说明

运行代码后会先输出Downloading file ,之后每下载1KB内容就追加一个圆点,全部下载写入完成后换行输出Done!,和你需要的效果完全一致。如果是大文件也可以调整chunk_size参数控制圆点刷新的频率,比如改成10240就是每下载10KB打印一个圆点。

内容的提问来源于stack exchange,提问作者guilfer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:07