Maison > développement back-end > Tutoriel Python > Comment puis-je parcourir la sortie du sous-processus ligne par ligne en Python tout en enregistrant toutes les sorties ?

Comment puis-je parcourir la sortie du sous-processus ligne par ligne en Python tout en enregistrant toutes les sorties ?

Susan Sarandon
Libérer: 2024-12-06 12:08:11
original
836 Les gens l'ont consulté

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

Itération ligne par ligne de la sortie du sous-processus

Lors de l'utilisation d'un sous-processus en Python pour exécuter des commandes externes, la gestion de la sortie peut être difficile. Cet article traite d'un scénario spécifique dans lequel un script doit stocker toutes les sorties dans un fichier journal tout en affichant simultanément les lignes sélectionnées à l'utilisateur.

L'approche originale utilisée pour la ligne dans proc.stdout :, qui lit l'intégralité de la sortie à la fois avant de répéter. Pour surmonter ce problème, la solution proposée consiste à utiliser readline() à la place :

while True:
  line = proc.stdout.readline()
  if not line:
    break
  #the real code does filtering here
  print "test:", line.rstrip()
Copier après la connexion

Cette approche permet au script d'imprimer chaque ligne au fur et à mesure qu'elle est reçue du sous-processus, garantissant ainsi un filtrage de sortie en temps réel.

Cependant, il est important de noter que la gestion des tampons de sous-processus peut introduire des complexités supplémentaires. Selon la version de Python et le système d'exploitation, la solution proposée peut donner des résultats différents.

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