python调用shell命令并检查响应

时间:2016-11-11 03:40:43

标签: python shell python-3.x

在做出决定之前,尝试编写一个读取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)

如何阅读回复?

谢谢!

2 个答案:

答案 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)