サブプロセス出力の行ごとの反復
Python でサブプロセスを使用して外部コマンドを実行する場合、出力の処理が困難になることがあります。この記事では、スクリプトがすべての出力をログ ファイルに保存すると同時に、選択した行をユーザーに表示する必要がある特定のシナリオについて説明します。
proc.stdout: の行に使用される元のアプローチは、出力全体を読み取ります。繰り返す前に一度に。この問題を克服するために、提案されている解決策は、代わりに readline() を使用することです。
while True: line = proc.stdout.readline() if not line: break #the real code does filtering here print "test:", line.rstrip()
このアプローチにより、スクリプトはサブプロセスから受信した各行を印刷できるようになり、リアルタイムの出力フィルタリングが保証されます。
ただし、サブプロセス バッファーの処理はさらに複雑になる可能性があることに注意することが重要です。 Python のバージョンとオペレーティング システムに応じて、提案されたソリューションは異なる結果をもたらす可能性があります。
以上がすべての出力をログに記録しながら、Python でサブプロセスの出力を 1 行ずつ反復するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。