ホームページ >バックエンド開発 >Python チュートリアル >すべての出力をログに記録しながら、Python でサブプロセスの出力を 1 行ずつ反復するにはどうすればよいですか?

すべての出力をログに記録しながら、Python でサブプロセスの出力を 1 行ずつ反復するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-06 12:08:11875ブラウズ

How Can I Iterate Over Subprocess Output Line by Line in Python While Logging All Output?

サブプロセス出力の行ごとの反復

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。