【发布时间】:2021-12-17 00:21:48
【问题描述】:
我有一个 python3 “类文件对象”,其 read() 方法返回一个字符串 - 它来自打开的文件或使用 boto3 从 s3 流式传输的对象。
我想在将流传递给csv.DictReader 之前对其进行清理,特别是因为该模块在输入中的NUL 字符上出现了barfs。
我正在处理的 CSV 文件可能很大,所以我想做这个“流式传输”,而不是将整个文件/对象读入内存。
如何包装输入对象,以便我可以清理从read() 返回的每个字符串,调用如下:.replace('\x00', '{NUL}')?
我认为 io 库是可以查看的地方,但我找不到明显符合我要求的东西 - 能够拦截和转换对底层类文件对象的 .read() 的每次调用并将包装器传递给csv,而不是一次阅读整个内容。
【问题讨论】: