我正在使用Python中的ijson库来解析一个大型的SON文件,我需要找到文件中特定数据所在的位置.我想使用file.tell()来获取解析过程中文件读取器的当前位置.但它只给了我文件的长度.

from ijson import parse
with open('file','r') as f:
 for a, b, c in parse(f):
  print(f.tell())

推荐答案

ijson.parse正在使用源文件的缓冲读取:

>>> help(ijson.parse)
Help on function parse in module ijson.common:

parse(source, buf_size=65536, **config)

如果您的文件小于64 K,那么f.tell()将返回文件大小.

如果您使用parse(f, buf_size=1),那么f.tell()应该是准确的,但解析可能会更慢.

Python相关问答推荐

获取2个字节之间的异或

在Python中使用一行try

使用Python C API重新启动Python解释器

如何编写一个正规表达式来查找序列中具有2个或更多相同辅音的所有单词

如何使用bs 4从元素中提取文本

在Arrow上迭代的快速方法.Julia中包含3000万行和25列的表

模型序列化器中未调用现场验证器

遵循轮廓中对象方向的计算线

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

如何使用Google Gemini API为单个提示生成多个响应?

Python多处理:当我在一个巨大的pandas数据框架上启动许多进程时,程序就会陷入困境

从收件箱中的列中删除html格式

如何记录脚本输出

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

Pandas:将多级列名改为一级

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

什么是最好的方法来切割一个相框到一个面具的第一个实例?

使用BeautifulSoup抓取所有链接

找到相对于列表索引的当前最大值列表""

使用Openpyxl从Excel中的折线图更改图表样式