12

Python でプログラムを作成しようとしていますが、.exe ファイルを実行するように指示されました。この .exe ファイルを実行すると、大量のデータが出力されるため、特定の行を画面に出力する必要があります。または同様のものを使用する必要があると確信していますsubprocess.popenが、サブプロセスは初めてで、手がかりがありません。これを行う簡単な方法はありますか?

4

2 に答える 2

27

@Paolo のソリューションは、プロセスの実行が終了した後に出力を印刷することに関心がある場合に最適です。プロセスの実行中に出力をポーリングする場合は、次のようにする必要があります。

process = subprocess.Popen(cmd, stdout=subprocess.PIPE)

while True:
    out = process.stdout.readline(1)
    if out == '' and process.poll() != None:
        break
    if out.startswith('myline'):
        sys.stdout.write(out)
        sys.stdout.flush()
于 2009-05-28T20:52:54.580 に答える
21

このようなもの:

import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
于 2009-05-28T20:49:38.363 に答える