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()
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!