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

使用requests.get与shutil.copyfileobj时如何获取数据文件大小?

获取文件大小的两种可行方法

方法一:从响应头Content-Length提取(服务器需返回该字段)

直接从requests响应的headers中获取Content-Length字段值,转为整数即为文件的字节大小。代码示例:

import requests
import shutil

target_url = "你的目标文件URL"
save_path = "本地保存路径"

with requests.get(target_url, stream=True) as r:
    # 检查响应头是否包含Content-Length
    if 'Content-Length' in r.headers:
        file_size = int(r.headers['Content-Length'])
        print(f"文件大小:{file_size} 字节")
    
    with open(save_path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)

注意:若服务器采用分块传输编码(响应头含Transfer-Encoding: chunked),则不会返回Content-Length,此方法失效。

方法二:写入完成后计算本地文件大小

如果无法从响应头获取大小,可在文件完全写入本地后,通过系统API读取文件大小:

import requests
import shutil
import os

save_path = "本地保存路径"
target_url = "你的目标文件URL"

with requests.get(target_url, stream=True) as r:
    with open(save_path, 'wb') as f:
        r.raw.decode_content = True
        shutil.copyfileobj(r.raw, f)

# 写入完成后获取文件大小
file_size = os.path.getsize(save_path)
print(f"文件大小:{file_size} 字节")

这种方法不受服务器传输方式限制,唯一不足是需等待文件写入完成才能得到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:05:01