问题
I have a shell script which asks the user for too many questions.
I want to answer every question that ends with :
with a enter, and every question that ends with a ?
with y
enter.
e.g.,
Enter your name: enter Enter your email: enter ... Are you sure these details are correct? yenter
I have started the subprocess with:
subprocess.Popen(shell=True, stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE)
How do I poll over the script's output, waiting for the question to appear?
回答1:
Try something like this (I have not tested it):
import pexpect
child = pexpect.spawn('yourprogram')
while True:
found = child.expect ([r':$', r'\?$', pexpect.EOF])
if found == 0:
child.send('\n')
elif found == 1:
child.send('y\n')
else: # EOF
return
来源:https://stackoverflow.com/questions/9555477/python-subprocess-interacting-with-a-shell-script