4

ユーザーにあまりにも多くの質問をするシェルスクリプトがあります。

で終わるすべての質問と:、で終わるすべての質問に答えたいと思います。enter?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 に答える