使用subprocess.Popen的隐藏字符

时间:2014-07-17 20:56:58

标签: python variables subprocess popen

我正在尝试从以下代码中获取数值。当我“打印”出来的值时,我得到一个数字“1”。然而,当它转到“if”语句时,我总是在“STORE”中作为存储变量“关闭”。代码的第三行用于删除回车。

CLOSED = subprocess.Popen(
    [
        "ssh",
        "hostname",
        "/usr/blaine/store_status | grep 00 | awk \{\'print $5\'\}"
    ],
    stdout=subprocess.PIPE
)



CLOSED_OUTPUT = CLOSED.stdout.read()
CLOSED_OUTPUT = CLOSED_OUTPUT.replace('\n','')

(很难让if语句正确显示,我确实有正确的缩进,如果我分配变量它确实有效)

if CLOSED_OUTPUT == 1:
    STORE = "open"
else:
    STORE = "closed"

print ("The store is %s." % (STORE))

2 个答案:

答案 0 :(得分:2)

CLOSED_OUTPUT是一个字符串,因此它永远不会比较整数1。

你可以尝试

if CLOSED_OUTPUT == '1':

或者,如果您希望结果通常是整数,请在使用之前将其转换为整数。

答案 1 :(得分:0)

from subprocess import check_output

output = check_output(["ssh", "hostname",
    "/usr/blaine/store_status | grep 00 | awk \{'print $5'\}"])
try:
    value = int(output)
except ValueError:
    opened = False
else:
    opened = (value == 1)

print("The store is {}.".format("open" if opened else "closed"))

int()会忽略'\n'这样的空格,即您不需要进行替换。您也可以在Python中重新实现grep .. | awk部分。 paramiko(Python ssh库)允许您通过ssh运行远程命令而无需运行ssh子进程。