Python subprocess: interacting with a shell script

2019-05-10 16:29发布

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 yenter.

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条回答
我欲成王,谁敢阻挡
2楼-- · 2019-05-10 17:27

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
查看更多
登录 后发表回答