将os.system的输出分配给变量,并阻止它在屏幕上显示

问题:

我想使用os.system将我运行的命令的输出分配给一个变量,并阻止它输出到屏幕。但是,在下面的代码中,输出被发送到屏幕,为var打印的值为0,我猜想是否表示该命令是否成功运行。有没有办法将命令输出分配给变量,也阻止它显示在屏幕上?

var = os.system("cat /etc/services")
print var #Prints 0

回答:

来自“Equivalent of Bash Backticks in Python”,我以前问过,你可能想要使用的是popen

os.popen('cat /etc/services').read()

我被告知subprocess是一个更好的解决方法,所以这里是相应的代码:

import subprocess

proc = subprocess.Popen(["cat", "/etc/services"], stdout=subprocess.PIPE, shell=True)
(out, err) = proc.communicate()
print "program output:", out

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Assign output of os.system to a variable and prevent it from being displayed on the screen

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

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

+ 32 = 40