我想将我使用os.system
运行的命令的输出赋给一个变量,并防止它被输出到屏幕上。但是,在下面的代码中,输出被发送到屏幕,并且为var
打印的值是0,我猜这表示命令是否成功运行。有没有办法将命令输出赋值给变量,并阻止它在屏幕上显示?
var = os.system("cat /etc/services")
print var #Prints 0
发布于 2010-08-17 23:29:42
您可能还想看看subprocess
模块,它是为替换整个Python popen
-type调用而构建的。
import subprocess
output = subprocess.check_output("cat /etc/services", shell=True)
它的优点是,在调用命令的方式、连接标准输入/输出/错误流的位置等方面有很大的灵活性。
发布于 2010-08-17 23:22:33
commands模块是完成此操作的一种相当高级的方法:
import commands
status, output = commands.getstatusoutput("cat /etc/services")
状态为0,输出为/etc/services的内容。
发布于 2016-03-17 18:45:39
对于python 3.5+,建议使用run function from the subprocess module。这将返回一个CompletedProcess
对象,您可以从该对象轻松地获取输出和返回代码。因为您只对输出感兴趣,所以可以像这样编写一个实用程序包装器。
from subprocess import PIPE, run
def out(command):
result = run(command, stdout=PIPE, stderr=PIPE, universal_newlines=True, shell=True)
return result.stdout
my_output = out("echo hello world")
# Or
my_output = out(["echo", "hello world"])
https://stackoverflow.com/questions/3503879
复制相似问题