90 votes

Lire l’entrée de streaming à partir de subprocess.communicate()

J’utilise Python pour lire stdout à partir d’un `` processus qui s’exécute pendant environ une minute.

Comment puis-je imprimer chaque ligne de ce processus `` de manière à ce que je puisse voir la sortie telle qu’elle est générée, tout en bloquant la fin du processus avant de continuer ?

`` semble donner toute la sortie à la fois.

47voto

unutbu Points 222216

Veuillez noter que je pense que la méthode de J.F. Sebastian (ci-dessous) est meilleure.


Voici un exemple simple (sans vérification des erreurs) :

Si `` elle se termine trop vite, la boucle while peut se terminer avant que vous ayez lu toutes les données.

Vous pouvez attraper le reste dans stdout de cette façon:

3voto

Lukáš Lalinský Points 22537

Si vous souhaitez une approche non bloquante, n’utilisez pas . Si vous définissez l’argument sur , vous pouvez lire et vérifier si le processus s’exécute toujours àl’aide de .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X