如何在python中用untangle解析子进程中的xml?

问题描述 投票:0回答:1

我试图用python中的untangle从一个子进程中解析一些xml。

out = subprocess.run(["./my_executable",options], stdout=PIPE, stderr=PIPE)
root = untangle.parse(out.stdout)

这给了我一个 TypeError:

Traceback (most recent call last):
  File "./script.py", line 64, in <module>
    root = untangle.parse(out.stdout)
  File "/home/user/.local/lib/python3.6/site-packages/untangle.py", line 182, in parse
    parser.parse(StringIO(filename))
TypeError: initial_value must be str or None, not bytes

当我打印时 out.stdout 事实上,它确实按照预期给出了xml标签,但格式如下。

b'<root>\n  <c1>value1</c1>\n  <c2>value2</c2>\n</root>\n'

我试着去掉... \nre.sub() 但我又得到另一个错误。TypeError: cannot use a string pattern on a bytes-like object.

我想这可能是一个编码问题,而且这个 文件 会帮助我,但它似乎很有限。如何让untangle解析一个类似字节的对象?

python xml subprocess
1个回答
1
投票

先把类似字节的对象解码成一个字符串。

我使用的是 check_output 在这里提出一个异常,如果 my_executable 以一个非零的返回码结束。

out = subprocess.check_output(["./my_executable",options])
root = untangle.parse(out.decode("utf-8"))
© www.soinside.com 2019 - 2024. All rights reserved.