首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从python中的子进程解析xml

如何从python中的子进程解析xml
EN

Stack Overflow用户
提问于 2020-04-23 17:43:22
回答 1查看 228关注 0票数 0

我正在尝试解析来自于python中的解缠子进程的一些xml。

代码语言:javascript
复制
out = subprocess.run(["./my_executable",options], stdout=PIPE, stderr=PIPE)
root = untangle.parse(out.stdout)

这给了我一个TypeError

代码语言:javascript
复制
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标记,但格式如下:

代码语言:javascript
复制
b'<root>\n  <c1>value1</c1>\n  <c2>value2</c2>\n</root>\n'

我尝试用\n删除re.sub(),但随后我得到了另一个错误:TypeError: cannot use a string pattern on a bytes-like object

我认为这可能是一个编码问题,文档会帮助我解决这个问题,但它似乎是相当有限的。如何使解缠解析一个类似字节的对象?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 17:46:37

首先将类似字节的对象解码为字符串。

如果check_output以非零返回代码结尾,我在这里使用my_executable来引发异常。

代码语言:javascript
复制
out = subprocess.check_output(["./my_executable",options])
root = untangle.parse(out.decode("utf-8"))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61393668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档