在Python中输出os.system,并使用它在xml文件中创建文本节点
我想使用python在Python中输出os.system,并使用它在xml文件中创建文本节点,xml,linux,python-3.x,bash,docker,Xml,Linux,Python 3.x,Bash,Docker,我想使用pythonos.system函数执行命令docker ps-q,然后获取其输出以使用它创建xml文本节点 我尝试了xml.createTextNode(os.system(“docker ps-q”): 6 from xml.dom导入minidom 7导入操作系统 8. 9 xml=minidom.Document() 10 11 rootElem=xml.createElement('容器') 12 13 dataElem=xml.createElement('data') 14
os.system
函数执行命令docker ps-q
,然后获取其输出以使用它创建xml文本节点
我尝试了xml.createTextNode(os.system(“docker ps-q”)
:
6 from xml.dom导入minidom
7导入操作系统
8.
9 xml=minidom.Document()
10
11 rootElem=xml.createElement('容器')
12
13 dataElem=xml.createElement('data')
14
15 idElem=xml.createElement('id')
16 idElem.appendChild(xml.createTextNode(os.system(“docker ps-q”))
但它给了我一个错误:
文件“scriptCreateXML.py”,第16行,在
appendChild(xml.createTextNode(os.system(“docker ps-q”))
createTextNode中的文件“/usr/lib/python3.6/xml/dom/minidom.py”,第1658行
raise TypeError(“节点内容必须是字符串”)
TypeError:节点内容必须是字符串
我预计这项研究的成果
一些身份证
修改最后一行,使用子流程
而不是os
,使用检查输出
而不是调用
In [25]: idElem.appendChild(xml.createTextNode(subprocess.check_output(["docker","ps", "-aq"]).decode('UTF-8')))
Out[25]: <DOM Text node "'967dd77436'...">
[25]中的:idElem.appendChild(xml.createTextNode(子流程检查输出([“docker”、“ps”、“-aq”])。解码('UTF-8'))
出[25]:
我没有正在运行的容器,所以我使用了“-aq”,您可以根据需要修改它。您无法通过
os.system()获得程序的输出
-它直接到达您的终端,Python从未看到它。使用子流程
模块中的各种函数之一实际获取此输出。除了@jasonharper所说的:如果出现错误,您将捕获一个0
,或者捕获一个整数>0
。