将输出的子进程存储在一个字符串中

问题:

我试图在Python中进行系统调用,并将输出存储到可以在Python程序中操作的字符串。

#!/usr/bin/python
import subprocess
p2 = subprocess.Popen("ntpq -p")

我已经尝试了几件事,其中包括一些建议:
 Retrieving the output of subprocess.call()
但没有任何运气。

回答:

 在Python 2.7或Python 3中
直接使用Popen对象,可以使用subprocess.check_output() function将命令的输出存储在字符串中:

from subprocess import check_output

out = check_output(["ntpq", "-p"])

 在Python 2.4-2.6
使用communicate方法。

import subprocess
p = subprocess.Popen(["ntpq", "-p"], stdout=subprocess.PIPE)
out, err = p.communicate()

 out是你想要的
 关于其他答案的重要说明
注意我如何传递命令。 "ntpq -p"例子提出了另一个问题。由于Popen不包含shell,您将使用命令列表和选项 – ["ntpq", "-p"]

 
 Code问答: codewenda.com
Stackoverflow:Store output of subprocess.Popen call in a string

发表评论

电子邮件地址不会被公开。 必填项已用*标注

8 + 2 =