如何在Python中读取captain proto消息(.bin文件),而不使用Premature的EOFs?

2024-10-06 14:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读一条船长的原始邮箱信息(用打包的方式写):

dag_file = dag_api_capnp.Dag.read_packed(dependency_file, traversal_limit_in_words=2 ** 64 - 1)

但它会产生以下错误:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_exec2.py", line 1, in Exec
    def Exec(exp, global_vars, local_vars=None):
  File "<input>", line 1, in <module>
  File "capnp/lib/capnp.pyx", line 3013, in capnp.lib.capnp._StructModule.read_packed
  File "capnp/lib/capnp.pyx", line 3600, in capnp.lib.capnp._PackedFdMessageReader.__init__
capnp.lib.capnp.KjException: kj/io.c++:53: failed: expected n >= minBytes; Premature EOF
stack: 122b411e3 122b43536 122a48a97 108ca7d40 1229aa340 122a5a3d7 108c0fcf0 108c15396 108d64cf4 108d62abe 10a9f7f4c 108d5520a 108d4f728 108c6ef33 108d64cf4 108d62a04 10a9f7f4c 108d5520a 108c1117d 108d64cf4 108d62a04 10a9f7f4c 108c110c1 108d64cf4 108d616f9 10a9f7f4c 108c110c1 108d64cf4 108d61662 10a9f7f4c 108c110c1

为什么会发生这种错误?我假设我没有正确阅读打包的邮件(或类似的内容)。如何在captain proto for python中正确打开此文件的内容

我阅读了以下链接,但没有帮助:

  1. Reading/writing Cap’n Proto messages partially
  2. How to set the Cap'n Proto RPC message traversal limit?
  3. https://github.com/capnproto/capnproto/issues/545
  4. https://jparyani.github.io/pycapnp/capnp.html#capnp._StructModule.read_packed

但是他们帮不了多少忙。似乎很难在网上找到任何带有确切错误消息的东西:expected n >= minBytes; Premature EOF,除了链接4似乎没有太大帮助(并且没有提到python这个词)

顺便说一句,这三个都会出现错误:

                dag_file = dag_api_capnp.Dag.read_packed(dependency_file, traversal_limit_in_words=2 ** 64 - 1)
                dag_file = dag_api_capnp.Dag.read_packed(dependency_file)
                dag_file = dag_api_capnp.Dag.read(dependency_file)

交叉张贴:https://github.com/capnproto/pycapnp/issues/257


Tags: inapireadlib错误linedependencyfile