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

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

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

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

我尝试了一些东西,包括这里的一些建议:

检索Subprocess.Call()的输出

但没有任何运气。


LEATH
浏览 582回答 3
3回答

汪汪一只猫

在Python2.7或Python3中而不是制造一个Popen对象时,可以使用subprocess.check_output()功能若要将命令的输出存储在字符串中,请执行以下操作:from subprocess import check_output out = check_output(["ntpq", "-p"])在Python2.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"].

桃花长相依

这对于我重定向stdout(stderr可以类似地处理)起了作用:from subprocess import Popen, PIPE pipe = Popen(path, stdout=PIPE)text = pipe.communicate()[0]如果它对你不起作用,请具体说明你遇到的问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python