我正在尝试将单个字符串中的驱动器温度恢复为“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
答案 0 :(得分:7)
subprocess.call()
返回process exit code(其中0
表示成功)。如果您想要流程输出,请改用subprocess.check_output()
:
print "Temp " + subprocess.check_output(command, shell=True)