Maison > développement back-end > Tutoriel Python > Comment capturer la sortie du sous-processus en direct et l'enregistrer simultanément ?

Comment capturer la sortie du sous-processus en direct et l'enregistrer simultanément ?

Linda Hamilton
Libérer: 2024-12-02 10:48:15
original
959 Les gens l'ont consulté

How to Capture Live Subprocess Output and Log it Simultaneously?

Sortie en direct de la commande de sous-processus

Pour capturer à la fois la sortie en direct et la stocker pour la journalisation, utilisez l'une de ces approches :

Utiliser un itérateur

Créez un itérateur pour lire à partir du sous-traiter la sortie standard et y écrire simultanément :

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)
Copier après la connexion

Utiliser un écrivain et un lecteur

Passer un écrivain au sous-processus et lire à partir d'un lecteur :

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())
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal