如何解决inkex.py TypeError:write参数必须为str,而不是字节
我正在尝试解决与Inkscape一起分发的inkex.py内部函数中的问题。功能是
def output(self):
"""Serialize document into XML on stdout"""
original = etree.tostring(self.original_document)
result = etree.tostring(self.document)
if original != result:
self.document.write(sys.stdout)
错误消息是“ TypeError:write()参数必须为str,而不是字节”。我认为这是Python 3 TypeError: must be str,not bytes with sys.stdout.write()中讨论的编码问题,但由于无法看到sys.stdout
中对self.document.write(sys.stdout)
的任何输入,因此我无法理解输入如何传递。原始资源可能是为Python 2编写的,但是我的系统中有Python 3。
这用于在inkscape程序中拆分文本,完整的错误消息如下:
Traceback (most recent call last):
File "split.py",line 218,in <module>
b.affect()
File "C:\Program Files\Inkscape\share\extensions\inkex.py",line 285,in affect
self.output()
File "C:\Program Files\Inkscape\share\extensions\inkex.py",line 272,in output
self.document.write(sys.stdout)
File "src\lxml\etree.pyx",line 2057,in lxml.etree._ElementTree.write
File "src\lxml\serializer.pxi",line 758,in lxml.etree._tofilelike
File "src\lxml\etree.pyx",line 318,in lxml.etree._ExceptionContext._raise_if_stored
File "src\lxml\serializer.pxi",line 682,in lxml.etree._FilelikeWriter.write
TypeError: write() argument must be str,not bytes
解决方法
我正在使用Inkscape 0.92版,此后我不知道要发布什么,但是1.0是最近发布的。
但是,我通过更改以下行来解决了问题
if original != result:
self.document.write(sys.stdout)
到
if original != result:
self.document.write(sys.stdout.buffer)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。