在做出决定之前,尝试编写一个读取shell命令输出的函数。例如:
6 def getCreds():
7 global access_key, secret_key, yourName
8 access_key = raw_input("Enter Access Key: ")
9 secret_key = raw_input("Enter Secret Key: ")
10 infoCorrect = raw_input('Is this information correct? (y or n)')
11 if infoCorrect.lower() == "yes" or infoCorrect.lower() =="y":
12 call (["./somecommand -u %s -p %s -flags" % (access_key, secret_key) + tfdir],shell=True)
13 else:
shell命令的输出是
"You have successfully logged in"
or
"you cannot log in"
所以我不知道正确的语法:
if response = "You have successfully logged in" :
(some action)
elif:
(some action)
如何阅读回复?
谢谢!
答案 0 :(得分:1)
我不认为可以返回shell
命令的输出。您只能检查命令是否成功或返回错误。
话虽如此,您可以将输出重定向到文件,然后检查其内容。
f = open("outputFile","wb")
call (["./somecommand -u %s -p %s -flags" % (access_key, secret_key) + tfdir],shell=True,stdout=f)
如果您想避免写入文件,那么您可能需要查看StringIO
模块。
答案 1 :(得分:1)
使用Popen()
中定义的subprocess
方法,并将输出重定向到PIPE
。试试这段代码:
import subprocess
p = subprocess.Popen("ls", shell=True, stdout = subprocess.PIPE)
output,err = p.communicate()
print(output)