python-3.x - antlr4可以用来解析非常大的gzip压缩文件吗?
问题描述
我正在尝试在python3中解析非常大的 gzip 压缩(10+GB)文件。我没有创建解析树,而是根据此答案中的建议使用了嵌入式操作。
但是,查看FileStream
代码它想读取整个文件然后对其进行解析。这不适用于大文件。
所以,这是一个两部分的问题。
- ANTLR4 可以使用可能是自定义的文件流,允许它一次读取文件的块吗?类接口应该是什么样的?
- 基于上述“是”,该类是否需要处理查找操作,如果底层文件是 gzip 压缩的,这将是一个问题?
解决方案
简短的回答:不,不可能。
长(错误)答案:ANTLR4 可以潜在地使用无限前瞻,因此它依赖于流来寻找任何位置而没有延迟,否则解析速度将下降到几乎停滞不前。出于这个原因,所有运行时都使用一个普通的文件流来一次读取整个文件。
过去曾讨论/尝试创建一个仅缓冲部分输入的流,但我还没有听说过任何实际有效的方法。
推荐阅读
- java - 如何修复错误 java.util.InputMismatchException?
- scala - Scala 测试:guiceApplicationBuilder 没有用测试配置替换应用程序配置
- php - Docker 中的 PECL 包安装失败
- javascript - 如何在网页上添加 Youtube 视频
- python - 通过另一个排序的枚举列表重新排列元组列表
- docker - Docker 没有使用 pip install -r requirements.txt 正确安装 python 包
- php - wordpress 谷歌分析 function.php 问题
- django - 将数据保存到两个表中。ID 为“无”的学生不存在。也许它被删除了?
- python - Python一次将多个字符串添加到另一个具有索引的字符串
- javascript - 如何在不使用正则表达式的情况下在 javascript 中拆分具有多个分隔符的字符串?