サブプロセス コマンドからのライブ出力
両方のライブ出力をキャプチャし、ログ用に保存するには、次のいずれかのアプローチを使用します。
イテレーターの使用
作成サブプロセスの標準出力から読み取り、同時に書き込むイテレータ:
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 サイトの他の関連記事を参照してください。