如何使用Python-Polars读取zstd压缩的CSV文件?
解决Polars读取zstd压缩CSV文件的问题
错误原因
你之前的代码报错是因为用xopen以文本模式("r")打开文件,返回的是文本流,但Polars的read_csv底层基于Rust实现,期望接收字节流,因此无法将文本对象向下转换为字节,触发PyDowncastError。
解决方案
方法1:用xopen以二进制模式打开
将xopen的打开模式改为"rb"(二进制读模式),直接将字节流传递给pl.read_csv,同时可根据CSV文件实际编码指定编码参数:
from xopen import xopen import polars as pl with xopen("data.csv.zst", "rb") as f: df = pl.read_csv(f, encoding="utf-8")
方法2:直接用zstandard库解压读取
如果不想依赖xopen,可以直接使用zstandard库手动创建解压流:
import polars as pl import zstandard as zstd with open("data.csv.zst", "rb") as f: decompressor = zstd.ZstdDecompressor() with decompressor.stream_reader(f) as stream: df = pl.read_csv(stream)
内容的提问来源于stack exchange,提问作者Cornelius Roemer
相关产品推荐
相关产品推荐

