有没有办法轻松地将答案传递给python中的可执行文件?
我有一个shell安装脚本(第三方),它在安装之前要求一些参数。我想从我的python脚本中提供该参数。
有可能吗? 喜欢 subprocess.popen(的MyScript,[" ANSWER1"" ANSWER2"])
答案 0 :(得分:1)
有一个很好的Python模块可以做到这一点,称为pexpect
以下是使用它以交互方式运行scp的示例(来自pexpect docs):
child = pexpect.spawn('scp foo myname@host.example.com:.')
child.expect ('Password:') # wait for 'Password:' to show up
child.sendline (mypassword)
答案 1 :(得分:1)
有可能吗?比如
subprocess.popen(myscript,["answer1","answer2"])
是。如果您知道所有答案,那么您可以使用Popen.communicate()
来传递答案:
#!/usr/bin/env python
from subprocess import Popen, PIPE
process = Popen(myscript, stdin=PIPE, universal_newlines=True)
process.communicate("\n".join(["answer1", "answer2"]))
在某些情况下可能会失败,您可以使用pexpect
模块(作为@Robin Davis suggested)来解决输入/输出超出标准流时可能出现的块缓冲问题。见Q: Why not just use a pipe (popen())?