Python 子进程:与 shell 脚本交互

Ada*_*tan 4 python io shell subprocess interactive-shell

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

我要回答所有问题,与两端:enter每一个问题,与一结束,并?yenter

例如,

输入你的名字:
enter

输入你的电子邮箱:
enter

...

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

我已经开始了子流程:

Enter your name:
enter

Enter your email:
enter

...

Are you sure these details are correct?
yenter

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

Jam*_*man 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
Run Code Online (Sandbox Code Playgroud)

  • `pexpect.run('你的程序', events={r':$': '\n', r'\?$': 'y\n'})` (2认同)