Windows上的Python Avro给ord()预期一个字符,但找到了长度为0的字符串

时间:2014-11-04 14:30:25

标签: avro

我正在尝试使用Java编写Avro序列化文件,然后在Windows上使用Python读取它。我能够使用Java写出Avro文件,但是当我尝试使用Python读取它时,我得到一个错误" ord()期望一个字符,但找到长度为0的字符串"

文件不完整或没有刷新不是错误,因为我可以通过Java完全读取文件并且读取正常。

我的python设置不是基本错误,因为我可以在Avro入门页面上运行示例序列化/反序列化:http://avro.apache.org/docs/current/gettingstartedpython.html

任何想法可能是什么。

1 个答案:

答案 0 :(得分:5)

我自己回答这个问题,因为我看到了几个不同形式的类似帖子,但没有一个被回答。

问题是我使用模式“r”而不是“rb”打开我的python文件。这读取正常,直到它遇到一个十六进制0x1A的字节,它被解释为Windows上的文件结束。解决方案是将文件打开为二进制文件。

(我建议将Avro入门(Python)页面更改为使用二进制模式文件,以避免其他人遇到此问题。)