使用Polars scan_ndjson读取gzip jsonl文件时遇TypeError求助
解决Polars scan_ndjson读取gzip压缩jsonl的报错问题
错误原因
你的代码报错是因为scan_ndjson作为懒加载方法,不接受file.read()返回的字节数据,它需要的是文件路径、文件对象或路径类对象,而不是已读取的内容。另外代码末尾多了一个括号,属于语法错误。
read_ndjson能正常工作是因为它支持直接传入字节数据,但它是立即加载到内存,所以会有内存问题;而scan_ndjson是懒加载,必须指向数据源本身,而非加载后的内容。
正确解决方案
方案一:直接传入文件路径(推荐)
Polars的scan_ndjson支持自动识别gzip压缩格式,不需要手动用gzip模块打开文件,直接传路径即可实现懒加载:
import polars as pl df = pl.scan_ndjson(file_path, ignore_errors=True)
这样既避免了内存问题,又自动处理了压缩,代码更简洁。
方案二:传入文件对象(备选)
如果必须手动处理文件对象,直接传打开的文件对象给scan_ndjson,不要调用read():
import gzip import polars as pl with gzip.open(file_path, 'rb') as file: df = pl.scan_ndjson(file, ignore_errors=True)
内容的提问来源于stack exchange,提问作者Pain
相关产品推荐
相关产品推荐

