【问题标题】:Print subprocess.call result [duplicate]打印 subprocess.call 结果 [重复]
【发布时间】:2014-04-01 20:46:19
【问题描述】:

我正在尝试以“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


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

我希望我能得到这个:

Temp: 29

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

Linux 上的 Python 2.7 3.8.0-34-generic #49-Ubuntu SMP Tue Nov 12 18:00:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

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

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

    【讨论】:

    • 呸,你有闪电般的手指:P
    • @JoranBeasley 我看到 Martijn 在巴哈马度假。这是他不在时的机器人回答。
    猜你喜欢
    • 2016-10-31
    • 2021-03-18
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多