Linux命令行调用没有从os.system返回它应该返回的内容?

2024-05-17 01:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对linux进行一些命令行调用并从中得到返回,但是如下操作只是返回0当它应该返回一个时间值时,比如00:08:19,我正在常规命令行中测试完全相同的调用,它返回时间值00:08:19,所以我很困惑自己做错了什么,因为我认为这是错误的如何在python中实现。

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

Tags: no命令行importtimeoslinux错误时间
2条回答

最简单的方法是这样:

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

这将作为列表返回

如果您只对流程的输出感兴趣,那么最容易使用subprocess'check_output函数:


output = subprocess.check_output(["command", "arg1", "arg2"]);

然后output将程序输出保存到stdout。查看上面的链接以获取更多信息。

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

使用popen etc捕获输出。

沿着这条线的一些东西:

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

在SO上:Popen and python

相关问题 更多 >