Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中输出os.system,并使用它在xml文件中创建文本节点_Xml_Linux_Python 3.x_Bash_Docker - Fatal编程技术网

在Python中输出os.system,并使用它在xml文件中创建文本节点

在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

我想使用python
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