Je veux créer un script batch simple en utilisant python en utilisant os.system. Je suis capable d'exécuter les commandes très bien, mais la sortie de ces commandes ne s'imprime pas sur le shell python. Est-il possible de rediriger la sortie vers le shell python?Python: Comment rediriger la sortie de os.system vers shell Python?
Répondre
(Reposting comme une réponse à la demande):
os.system()
fonctionnera lorsqu'il est exécuté dans un terminal - c'est là stdout va, et tous les processus que vous commencez hériteront que stdout à moins que vous redirigez il.
Si vous devez rediriger vers IDLE, utilisez la réponse @ root45 ci-dessus (mise à jour). Cela fonctionnera pour la plupart des programmes, mais au moins sur les systèmes Unixy, les processus peuvent également accéder directement au terminal dans lequel ils sont exécutés (par exemple pour demander un mot de passe) - Windows peut avoir quelque chose de similaire.
Merci. Je testais mon programme en mode IDLE, ce qui explique pourquoi j'avais des problèmes, mais le programme devait fonctionner dans le shell Unix de toute façon. Dès que je l'ai couru dans la coquille, j'ai vu la sortie très bien. – mtmurdock
Vous pouvez utiliser subprocess
.
from subprocess import Popen, PIPE
p1 = Popen(['ls'], stdout=PIPE)
print p1.communicate()[0]
Cela affichera le répertoire liste pour le répertoire en cours. La méthode communicate()
renvoie un tuple (stdoutdata, stderrdata)
. Si vous n'incluez pas stdout=PIPE
ou stderr=PIPE
dans l'appel Popen
, vous obtiendrez simplement None
. (Ainsi, dans ce qui précède, p1.communicate[1]
est None
.)
Dans une ligne,
print Popen([command], stdout=PIPE).communicate()[0]
imprime la sortie de command
à la console.
Vous devriez en lire plus here. Il y a beaucoup plus que vous pouvez faire avec Popen
et PIPE
.
Upvoted, mais finalement pas ce que je cherchais. Merci. – mtmurdock
- 1. Comment rediriger une sortie de console Python vers un QTextBox
- 2. Python os.system() dans Eclipse
- 3. Python: Comment rediriger cette sortie?
- 4. Rediriger la sortie de fichier en python
- 5. Comment rediriger la sortie du script Python vers le terminal
- 6. Rediriger stdout vers un enregistreur en Python
- 7. Python 3 os.system produit à partir du shell système?
- 8. Rediriger la sortie de l'enregistreur Python vers le widget tkinter
- 9. Rediriger la sortie 'print' de Python vers le Logger
- 10. rediriger la sortie de l'appel système en python
- 11. Suppression de la sortie avec os.system()
- 12. subprocess.call vs os.system python
- 13. CGI Python os.system
- 14. Comment rediriger la sortie de la console python lorsqu'elle est exécutée avec une commande os.system à un QTextBox?
- 15. Sortie Python vers le terminal lors de la connexion ssh
- 16. Python: redirige la sortie vers plusieurs consoles?
- 17. Comment rediriger une chaîne de paramètres vers excutable en python?
- 18. Surmonter la limitation os.system() dans Python 2.3
- 19. Rediriger la sortie shell VxWorks vers un socket
- 20. Rediriger la sortie d'un script shell vers un fichier
- 21. GUI Python (glade) pour afficher la sortie du processus shell
- 22. Sortie de sous-processus Python vers stdout
- 23. Python, rediriger le flux de Popen vers une fonction python
- 24. Comment puis-je rediriger getpass() de Python vers stderr?
- 25. La commande Python os.system ne fonctionne pas?
- 26. Python 'source HOME/.bashrc' avec os.system()
- 27. Sortie du fichier shell d'analyse avec Python
- 28. Problèmes de Shell à Python
- 29. Sortie Python PrettyPrint vers la variable
- 30. Obtenir une sortie shell avec Python?
Pourriez-vous montrer un code? Il est difficile de dire ce que vous essayez de faire. –
Vous pourriez essayer d'utiliser le module ['subprocess'] (http://docs.python.org/library/subprocess.html#module-subprocess) au lieu de' os.system', il a de meilleures fonctionnalités (comme rediriger la sortie) – NullUserException
Oui, beaucoup de gens ont suggéré cela, mais je ne peux pas sembler le faire fonctionner. Connaissez-vous un bon exemple étape par étape? Je suis très nouveau à Python et la plupart des exemples que j'ai trouvés supposent que vous savez ce que vous faites. – mtmurdock