Je suis en train d'exécuter un sous-programme en utilisant SubProcess.Popen. Lorsque je démarre mon programme Python à partir de la fenêtre de commande (cmd.exe), le programme écrit des informations et des dates dans la fenêtre car le programme évolue.
Quand je mange mon code Python pas em> dans un Fenêtre de commande, elle ouvre une nouvelle fenêtre de commande pour la sortie de ce sous-programme et je veux éviter cela. Lorsque j'ai utilisé le code suivant, il ne montre pas la fenêtre CMD, mais elle n'imprime pas non plus l'état: p> Comment puis-je montrer la sortie du sous-programme Dans la production de mon programme tel qu'il se produit? p> p>
3 Réponses :
Utilisez ceci:
cmd = subprocess.Popen(["c:/flow/flow.exe"], stdout=subprocess.PIPE) for line in cmd.stdout: print line.rstrip("\n") cmd.wait() # you may already be handling this in your current code
alternativement à la "ligne.RStrip .." Vous pouvez utiliser "ligne" (notez la virgule suivante)
pour la ligne in iter (cmd.stdout.readline, ""): Ligne d'impression , code>
peut fournir une sortie plus immédiate en évitant éventuellement éviter la mémoire tampon de lecture dans l'itérateur de fichiers (note: le sous-programme doit toujours rincer son stdout)
Ne vois pas pourquoi c'est async.
C'est un ancien poste, mais un problème commun avec une solution difficile à trouver. Essayez ceci: http: // code .activeState.com / Recettes / 440554-Module-to-Autoriser-Subprocess-sous-processus-user-on-win / P>
Malheureusement, cette solution il n'y a pas d'asynchrone.
À la recherche d'une recette pour traiter les données popen Asynchrone, j'ai trébuché sur http://code.activestate.com/recipes/576759-subprocess-with-aSync-io-pipes-class/ p>
Cela semble assez prometteur, mais j'ai eu l'impression qu'il pourrait y avoir des fautes de frappe. Pas encore essayé. P>
"Fenêtre Windows" Quelle fenêtre Windows? Utilisez-vous un cadre d'interface graphique? Lequel?
Eh bien, je court le modèle à travers Arcgis. Lorsque je clique sur mon outil, j'ai créé là-bas, une fenêtre passe et montre les progrès. Je veux voir des lignes apparaissant dans ma fenêtre de commande.
Et désolé pour le wiki. Je n'ai pas de viande à cliquer cette option.
Python3 w / asyncio C'est ce que vous voulez: kevinmccarthy.org/2016/07/25/...