4

我有一个 shell 脚本,它向用户询问太多问题。

我想回答每一个:以 a结尾enter的问题,以及每一个以 a 结尾的?问题yenter

例如,

输入你的名字:
enter

输入你的电子邮箱:
enter

...

你确定这些细节是正确的吗?
yenter

我已经开始了子流程:

subprocess.Popen(shell=True, stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE)

如何轮询脚本的输出,等待问题出现?

4

1 回答 1

5

尝试这样的事情(我没有测试过):

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
于 2012-03-04T14:10:46.607 回答