使用Kaitai Stuct同时给出EOF错误

时间:2018-09-20 09:05:50

标签: python python-3.x parsing binary kaitai-struct

我正在使用 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)

1 个答案:

答案 0 :(得分:0)

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

ksc生成的代码实际上是易读的,因此您也可以对其进行调试。您可以检查EOFError随附的堆栈跟踪,并查看它的确切位置。如果需要,您可以直接在ksc生成的解析器代码中添加更多调试打印,或在调试器等下运行它。

另一种选择是将.ksy加载到某种形式的可视化工具(即this command-line onethis WebIDE)中,看看问题出在哪里会更清楚。