打印subprocess.call结果

时间:2014-02-28 17:40:00

标签: python python-2.7 subprocess

我正在尝试将单个字符串中的驱动器温度恢复为“Temp:”作为前缀。为此,我运行一个简单的脚本,用于将字符串与命令的输出连接起来。

import subprocess

command = "sudo smartctl -A /dev/sda | egrep Temperature_Celsius | awk '{print $10}'"

print "Temp " + str(subprocess.call(command, shell=True))


结果:

29
Temp 0


当我删除'print'行时,'29'也没有显示。因此,当我使用print语句时,脚本由于某种原因返回'29'(?!)然后返回0,而29实际上是正确的值。

我希望我能得到这个:

Temp: 29

我曾尝试使用os.system,但结果相同。 我还尝试将命令直接添加到“command = str(subprocess.call(”)但它给出了相同的结果。 我已经阅读了os.system info页面和subprocess.call信息页面,我没有找到解决方案。然后我用Google搜索AWK命令,也许它创建了一些疯狂的输出,但我找不到任何有用的东西。

Python 2.7 on Linux 3.8.0-34-generic#49-Ubuntu SMP Tue 11月12日18:00:10 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

1 个答案:

答案 0 :(得分:7)

subprocess.call()返回process exit code(其中0表示成功)。如果您想要流程输出,请改用subprocess.check_output()

print "Temp " + subprocess.check_output(command, shell=True)