我正在使用 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)
答案 0 :(得分:0)
通常,意外的EOFError表示格式规范有问题,并且解析出错。
ksc生成的代码实际上是易读的,因此您也可以对其进行调试。您可以检查EOFError随附的堆栈跟踪,并查看它的确切位置。如果需要,您可以直接在ksc生成的解析器代码中添加更多调试打印,或在调试器等下运行它。
另一种选择是将.ksy加载到某种形式的可视化工具(即this command-line one或this WebIDE)中,看看问题出在哪里会更清楚。