ホームページ > バックエンド開発 > Python チュートリアル > ライブ サブプロセス出力をキャプチャし、同時にログに記録するにはどうすればよいですか?

ライブ サブプロセス出力をキャプチャし、同時にログに記録するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-02 10:48:15
オリジナル
959 人が閲覧しました

How to Capture Live Subprocess Output and Log it Simultaneously?

サブプロセス コマンドからのライブ出力

両方のライブ出力をキャプチャし、ログ用に保存するには、次のいずれかのアプローチを使用します。

イテレーターの使用

作成サブプロセスの標準出力から読み取り、同時に書き込むイテレータ:

import subprocess
import sys

with open("test.log", "wb") as f:
    process = subprocess.Popen(your_command, stdout=subprocess.PIPE)
    for c in iter(lambda: process.stdout.read(1), b""):
        sys.stdout.buffer.write(c)
        f.buffer.write(c)
ログイン後にコピー

ライターとリーダーの使用

ライターをサブプロセスに渡し、サブプロセスから読み取る読者:

import io
import time
import subprocess
import sys

filename = "test.log"
with io.open(filename, "wb") as writer, io.open(filename, "rb", 1) as reader:
    process = subprocess.Popen(command, stdout=writer)
    while process.poll() is None:
        sys.stdout.write(reader.read())
        time.sleep(0.5)
    # Read the remaining
    sys.stdout.write(reader.read())
ログイン後にコピー

以上がライブ サブプロセス出力をキャプチャし、同時にログに記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート