5

Pythonを使用してシェルでいくつかのコマンドを実行しました。シェルでコマンド応答を表示する必要があります。ただし、コマンドは 10 秒実行されます。私は待つ必要があります。コマンドのエコーを即座に表示するにはどうすればよいですか。以下は私のコードです

cmd = "commands"
output = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
print(output.stdout.read())     

そして、コマンドの出力を使用する必要があります。だから使えないsubprocess.call

4

1 に答える 1

3

output.stdoutループから読み取る:

cmd = "commands"
output = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
for line in output.stdout:
    print(line)

編集:python2では、これはまだすべてのケースで機能しないようですが、これは次のようになります:

for line in iter(output.stdout.readline, ''):
    print(line)
于 2013-11-12T08:21:59.987 に答える