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

Python如何将urllib.request.open()获取的csv.gz文件读取为pandas DataFrame

读取远程csv.gz字节流为DataFrame的方案

核心结论

你不需要手动将获取到的bytes类型内容转utf-8编码,手动解码压缩后的二进制内容本身就是错误操作,出现编码报错是正常现象,使用忽略错误的方式会导致数据丢失,完全不推荐。

pandas自带压缩文件读取能力,配合标准库可以直接读取你拿到的bytes流生成DataFrame,不需要额外解码步骤。

可直接运行的实现方法

方法1:兼容所有pandas版本

借助gzip标准库解压字节流,直接传入pd.read_csv即可:

import pandas as pd
import gzip
import urllib.request

# 你的原有逻辑,获取远程文件响应
response = urllib.request.open("你的csv.gz文件远程地址")

# 直接解压字节流后读取
with gzip.open(response, "rb") as f:
    df = pd.read_csv(f)

方法2:pandas 1.3及以上版本简化写法

pd.read_csv原生支持gzip压缩的类文件对象,无需额外导入gzip:

import pandas as pd
import urllib.request

response = urllib.request.open("你的csv.gz文件远程地址")
df = pd.read_csv(response, compression="gzip")

注意事项

  • 你拿到的bytes是gzip压缩后的二进制内容,不是纯文本csv,直接解码必然出现编码错误,属于正常现象,无需尝试手动解码
  • 如果读取后出现csv内容的编码问题,可给pd.read_csv补充encoding参数指定编码格式,比如encoding="utf-8"、encoding="gbk"等,不要使用忽略错误的解码方式避免数据丢失
  • 整个流程不需要将文件落地到本地,全程在内存中完成处理

内容的提问来源于stack exchange,提问作者Lucía Osorio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:03