意外とどこにも書かれていないようなので、メモしておきます。
#!/usr/bin/python from subprocess import * output = Popen( [ "vmstat", "1", "10" ], stdout=PIPE ) while True: line = output.stdout.readline() if not line: break print line
下記の方法だとコマンド出力が全部終わらないと表示されないので注意。
for line in output.stdout: print line
これは次のコードと同等に解釈されるためです。
for line in output.stdout.readlines(): print line
Python の思想としてコマンド出力やファイル入力は、なるべく一度に読み込んでオンメモリで処理することが想定されているようです。