8
votes

Ipython Notebook Sortie du processus d'enfant

Lorsque vous utilisez Ipython Notebook, la sortie des processus enfants engendrés par Subprocess ne se présente jamais dans le cahier lui-même. Par exemple, cette cellule xxx

indique uniquement 0 comme sortie, et le bonjour est imprimé sur le terminal où Ipython est lancé. < / p>

Y a-t-il des paramètres de configuration que je peux accorder de telle sorte que la sortie des processus enfants apparaissent dans le cahier lui-même?


effectivement des extensions Python C personnalisées aura également la production avalée. Y a-t-il un correctif?


0 commentaires

3 Réponses :


6
votes

Utilisez check_output code> si vous souhaitez la sortie capturée. check_call code> renvoie le code de sortie.

import subprocess
print subprocess.check_output(['echo', 'hello'])


2 commentaires

La sortie complète est capturée une fois la commande terminée lors de l'utilisation de check_output . Le processus que je veux réellement appeler est long, et il écrit à STDOUT et STDERR beaucoup d'informations de journalisation. Je veux voir ces informations de journalisation lors de l'exécution, donc check_output n'est pas le moyen de partir.


En Python3: impression (sous-processus.check_output (['echo', 'Hello']))



6
votes
from subprocess import Popen, PIPE
p = Popen (['echo', 'hello'], stdout=PIPE)
out = p.communicate ()
print (out)
(b'hello\n', None)
You can also look at stderr, similarly

0 commentaires

1
votes

de Python3.5 +

Je sens que je devrais ajouter une meilleure réponse. Le module sous-processus fournit désormais la méthode exécutation selon le Documentation :

L'approche recommandée pour invoquer des sous-processus consiste à utiliser la fonction RUN () pour tous les cas d'utilisation qu'il peut gérer. Pour des cas d'utilisation plus avancés, l'interface popen sous-jacente peut être utilisée directement. xxx


0 commentaires