一尘不染

Linux命令行调用没有从os.system返回什么?

linux

我需要对linux进行一些命令行调用并从中获取返回值,但是,如下所示,它只是在返回0应返回时间值时返回,例如00:08:19,我正在常规命令行中测试完全相同的调用,并且返回了时间值,00:08:19所以我对自己在做错的事情感到困惑,因为我认为这是在python中做的事情。

import os
retvalue = os.system("ps -p 2993 -o time --no-headers")
print retvalue

阅读 433

收藏
2020-06-02

共1个答案

一尘不染

返回的是执行此命令的返回值。直接执行命令时看到的是stdout中命令的输出。返回0表示执行没有错误。

使用popen等捕获输出。

这方面的一些事情:

import subprocess as sub
p = sub.Popen(['your command', 'arg1', 'arg2', ...],stdout=sub.PIPE,stderr=sub.PIPE)
output, errors = p.communicate()
print output

要么

import os
p = os.popen('command',"r")
while 1:
    line = p.readline()
    if not line: break
    print line
2020-06-02