![](/img/trans.png)
[英]Python - TypeError: write() argument must be str, not bytes
[英]inkex.py TypeError: write() argument must be str, not bytes
我正在嘗試解決與 Inkscape 一起分發的 inkex.py 中的 function 中的問題。 function 是
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()中討論的編碼問題,但我不明白輸入是如何在這里傳遞的,因為我看不到任何輸入self.document.write(sys.stdout)
sys.stdout
的 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.