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

标签 python linux python-2.7 command-line os.system

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

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

最佳答案

返回的是执行该命令的返回值。您在直接执行时看到的是标准输出中命令的输出。返回 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

开启:Popen and python

关于python - Linux 命令行调用没有从 os.system 返回它应该返回的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791465/

相关文章:

python - linux anaconda环境不安装模块

linux - 分配给变量的 Bash 命令保持为空

c - 使用管道在进程之间同步文件写入

python - 如何从没有特定字符的文本文件中打印一行

python - 创建按日期范围分区的暂存表

Python - 计算有错误的趋势线

python - Keras BatchNormalization 未初始化值

python - 将一个数据帧中的手机号码与另一数据帧中的手机号码进行比较

java - ClassLoader 在 Linux 上显示错误的路径

python - 实例方法还是函数?