python调用shell命令并检查响应

python调用shell命令并检查响应,python,shell,python-3.x,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_in

尝试编写一个函数,在做出决定之前读取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)
如何阅读回复


谢谢

我认为不能返回
shell
命令的输出。您只能检查命令是否成功或返回错误

您可以将输出重定向到文件,然后检查其内容

    f = open("outputFile","wb")
    call (["./somecommand -u %s -p %s -flags" % (access_key, secret_key) +     tfdir],shell=True,stdout=f)

如果您想避免写入文件,那么您可能需要查看
StringIO
模块。

我认为
shell
命令的输出无法返回。您只能检查命令是否成功或返回错误

您可以将输出重定向到文件,然后检查其内容

    f = open("outputFile","wb")
    call (["./somecommand -u %s -p %s -flags" % (access_key, secret_key) +     tfdir],shell=True,stdout=f)
如果要避免写入文件,则可能需要查看
StringIO
模块。

使用
subprocess
中定义的
Popen()
方法,并将输出重定向到
PIPE
。请尝试以下代码:

import subprocess

p = subprocess.Popen("ls", shell=True, stdout = subprocess.PIPE)
output,err = p.communicate()
print(output)
使用
subprocess
中定义的
Popen()
方法,将输出重定向到
PIPE
。请尝试以下代码:

import subprocess

p = subprocess.Popen("ls", shell=True, stdout = subprocess.PIPE)
output,err = p.communicate()
print(output)

那么,有没有更好的方法来代替使用shell命令呢?你有什么建议?更好的方法是什么?我的意思是,你的问题是,你想得到shell命令的输出,所以要得到shell命令的输出,你必须执行,shell命令到底做什么?使用Python Library可能有同样的方法。对不起,我想说的是,是否有更好的方法使用通过Python发出的shell命令的响应。这个shell命令“/somecommand”只需将用户名和密码发送到web服务。如果成功,服务将返回响应“You have successfully loggin”。使用
call
是我知道如何在python中发出shell命令的唯一方法。但是我想知道是否有更好的方法在python中发出这个命令并评估响应。就像你说的,也许是我不知道的Python库。谢谢-PythonN00BPOPEN将是更好的方法,但是您仍然需要将op重定向到某个文件。有没有更好的方法来执行此操作,而不是使用shell命令?你有什么建议?更好的方法是什么?我的意思是,你的问题是,你想得到shell命令的输出,所以要得到shell命令的输出,你必须执行,shell命令到底做什么?使用Python Library可能有同样的方法。对不起,我想说的是,是否有更好的方法使用通过Python发出的shell命令的响应。这个shell命令“/somecommand”只需将用户名和密码发送到web服务。如果成功,服务将返回响应“You have successfully loggin”。使用
call
是我知道如何在python中发出shell命令的唯一方法。但是我想知道是否有更好的方法在python中发出这个命令并评估响应。就像你说的,也许是我不知道的Python库。谢谢-PythonN00BPOPEN是更好的方法,但是您仍然需要将op重定向到某个文件。如果您经常这样做,就有方便的包装器可用。其中一个:(免责声明:我写的)@chowpay,你的问题解决了吗?如果你经常这样做,就会有便利包装可用。其中一个:(免责声明:我写的)@chowpay,你的问题解决了吗?