2017-09-29 5 views
1

ユーティリティを実行しているときにblabを実行すると、確認のために「はい」または「いいえ」と表示されますが、何ができますか?おかげで、Linuxのユーティリティを実行し、その応答をPythonで返すには?

コードは以下の通りです:

proc = subprocess.Popen("blab delete {}".format(num), shell=True, 
         stderr=subprocess.STDOUT, stdin=subprocess.STDIN) 
stdout_value = proc.communicate()[0] 

答えて

2

Popen.communicate()ドキュメント:

あなたはstdin=PIPEでpopenのオブジェクトを作成し、パイソンを使用して、プロセスの標準入力にデータを送信する場合。同様に、結果タプルでNone以外を取得するには、stdout = PIPEおよび/またはstderr = PIPEを指定する必要があります。

from subprocess import PIPE, Popen, STDOUT 

process = Popen("blab delete {}".format(num), shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT) 
output = process.communicate(input=b'yes')[0] 
output = output.decode('utf-8') 
+0

はい、同意します。しかし、私はその出力だけでなく、その質問に答える必要があります。 – codexplorer

+1

あなたは 'process.communicate(input = b'some answer ')'を繰り返し呼び出して、同じ手順で答えを送ることができます。 – nkprince007

+0

それは動作します。入力は最初のステップですが、私はいつもそうです。私の驚いたことに、それはサブプロセスの応答のための入力になることができます – codexplorer

関連する問題