Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menangkap Output Subproses Langsung dan Logkannya Serentak?

Bagaimana untuk Menangkap Output Subproses Langsung dan Logkannya Serentak?

Linda Hamilton
Lepaskan: 2024-12-02 10:48:15
asal
959 orang telah melayarinya

How to Capture Live Subprocess Output and Log it Simultaneously?

Output Langsung daripada Perintah Subproses

Untuk menangkap kedua-dua output langsung dan menyimpannya untuk pengelogan, gunakan salah satu pendekatan ini:

Menggunakan Iterator

Buat iterator untuk membaca daripada subproses stdout dan pada masa yang sama tulis padanya:

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)
Salin selepas log masuk

Menggunakan Penulis dan Pembaca

Lepaskan penulis ke subproses dan baca daripada pembaca:

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())
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Output Subproses Langsung dan Logkannya Serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan