首页 > 解决方案 > 使用 Kaitai Stuct 时出现 EOF 错误

问题描述

我正在使用Python创建二进制解析器

EOF error但是,当数据文件上的字节仍然存在时,它给出了一个偶数。有没有人面临同样的问题?无论如何要克服这一点?

    from btsv3 import Btsv3
    import os
    import binascii
    import csv

     for root, dirs, files in os.walk("./Perf/BTS/", topdown=False):
          for name in files:
              g = Btsv3.from_file(os.path.join(root, name))
              if g.header.version == 3:
        print(os.path.join(root, name), "Version 3")
        # Header
        print("BTS ID:", g.header.btsid, " | VERSION:", g.header.version, " | TOTAL LENGTH:", g.header.len, "\n")
        # Payload
        print("L3 perf data of BTS")
        print("Payload tag:", g.payload.l3tag)
        print("Payload length:", g.payload.l3len)

标签: pythonpython-3.xparsingbinarykaitai-struct

解决方案


通常,意外的 EOFError 表明格式规范有问题,并且解析出错了。

ksc 生成的代码实际上是相当可读的,因此您也可以对其进行调试。您可以检查 EOFError 提供的堆栈跟踪,并查看它到底发生在哪里。如果需要,您可以将更多调试打印直接添加到 ksc 生成的解析器代码中,或者在调试器下运行它等。

另一种选择是将您的 .ksy 加载到某种可视化工具(即这个命令行这个 WebIDE)中,看看是否会更清楚问题出在哪里。


推荐阅读