3

を使用してサブプロセスを作成しました

subprocess.Popen(shlex.split(command), stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

それが呼び出すコマンドは、さまざまな情報を出力し、\nさらに情報を出力する前に待機します。最終的に、\n十分な回数押すとプロセスは終了します。プロセスが終了するまでのプレスをプログラムでシミュレートし、\nすべての出力をキャプチャできるようにする必要があります。出力をターミナルに出力したくありません。返して変数に設定したいと思います。

どうすればいいですか?

4

2 に答える 2

2

一度だけ書き込む必要stdinがある場合は、次を使用できます

proc = subprocess.Popen(..., stdin = subprocess.PIPE)
proc.stdin.write('\n')

ただし、プロンプトを待つ必要がある場合や、より複雑な方法でサブプロセスと対話する必要がある場合は、pexpectを使用してください。(pexpect は、任意の POSIX システム、または Cygwin を使用する Windows で動作します。)

于 2013-02-27T18:23:57.667 に答える
0

この方法を試してください

from subprocess import Popen, PIPE
import shlex
with open (filename, 'w') as fileHandle
proc = Popen(shlex.split(command), stdin = PIPE, stdout = PIPE, stderr  = PIPE)
out, err = proc.communicate(input = '\n')
print out, err
于 2013-02-27T19:45:18.707 に答える