4

これは非常に単純な質問だと思いますが、単純な答えを見つけることができませんでした。

AWS クラスターを終了する python プログラムを実行しています (starcluster を使用)。次のようなサブプロセスを使用して、Pythonプログラムからコマンドを呼び出しています。

subprocess.call('starcluster terminate cluster', shell=True)

実際のコマンドは私の質問にはほとんど関係ありませんが、いくつかのコンテキストを提供します。このコマンドはクラスターの終了を開始しますが、続行する前に次のように yes/no の入力を求めます。

Terminate EBS cluster (y/n)? 

このプロンプトへの入力として、Python プログラム内から yes と入力するのを自動化するにはどうすればよいですか?

4

3 に答える 3

9

多少制限された方法で単独で行うことは可能ですがsubprocess、私はpexpectそのような相互作用のために行きます。

import pexpect
child = pexpect.spawn('starcluster terminate cluster')
child.expect('Terminate EBS cluster (y/n)?')
child.sendline('y')
于 2015-01-19T19:55:49.450 に答える
4

Popen を使用して stdin に書き込むことができます。

from subprocess import Popen, PIPE
proc = Popen(['starcluster', 'terminate', 'cluster'], stdin=PIPE)
proc.stdin.write("y\r")
于 2015-01-19T20:19:48.553 に答える
0

ターゲット プログラムのドキュメントを確認するのが最も簡単かもしれません。多くの場合、すべてのプロンプトに対して yes と答えるようにフラグを設定できますapt-get -y install

于 2015-01-19T20:17:01.583 に答える