我正在尝试从以下代码中获取数值。当我“打印”出来的值时,我得到一个数字“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))
答案 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
子进程。