Normalmente puedo cambiar la salida estándar en Python cambiando el valor de sys.stdout
. Sin embargo, esto solo parece afectar las declaraciones print
. Entonces, ¿hay alguna forma de que pueda suprimir la salida (a la consola) de un programa que se ejecuta a través del comando os.system()
en Python?Redireccionando stdio desde un comando en os.system() en Python
Respuesta
Podría considerar ejecutar el programa a través de subprocess.Popen
, con subprocess.PIPE
comunicación, y luego empujar esa salida donde quiera, pero como está, os.system
solo ejecuta el comando, y nada más.
from subprocess import Popen, PIPE
p = Popen(['command', 'and', 'args'], stdout=PIPE, stderr=PIPE, stdin=PIPE)
output = p.stdout.read()
p.stdin.write(input)
Mucho más flexible en mi opinión. Es posible que desee mirar la documentación completa: Python Subprocess module
redirige stderr así como stdout.
que no hacen la cita de trabajo de http://docs.python.org/library/os.html#process-management os.system (comando) Ejecute el comando (una cadena) en una subcadena. Esto se implementa llamando al sistema de función estándar C() y tiene las mismas limitaciones. Los cambios en sys.stdin, etc. no se reflejan en el entorno del comando ejecutado. –
En un sistema unix, puede redirigir stderr y stdout a/dev/null como parte del comando.
os.system(cmd + "> /dev/null 2>&1")
Eso funciona solo en un sistema Unix –
Sí, correcto. Respuesta actualizada para evitar confusiones. – ealdent
Si desea eliminar por completo la consola que pone en marcha con el programa de pitón, puede guardarlo con la extensión .pyw.
Sin embargo, es posible que esté malinterpretando la pregunta.
- 1. ¿Cómo ejecuto un programa desde Python? os.system falla debido a espacios en la ruta
- 2. Python: no se puede abrir un archivo usando os.system()
- 3. ¿Por qué este comando funciona con os.system() pero no subprocess.Popen()?
- 4. Ejecutando un comando linux desde python
- 5. pushd through os.system
- 6. Python bloque try no coge os.system excepciones
- 7. ¿El os.system() de Python espera el final del proceso?
- 8. Redireccionando stdin y stdout en .Net
- 9. Redireccionando salida FORTRAN (llamada mediante F2PY) en Python
- 10. Redireccionando a la página html local desde javascript en phonegap
- 11. ¿Stdio siempre establece errno?
- 12. redireccionando la salida del comando 'buscar' a 'vim'
- 13. ¿Cómo puedo ejecutar un comando externo de forma asincrónica desde Python?
- 14. ¿Cómo obtener datos de la línea de comando desde un programa de Python?
- 15. Cómo recibir mensajes stdio y error_logger en un shell remoto
- 16. Redireccionando con un 201 creado
- 17. ¿Cómo almacenar el resultado de un comando de shell ejecutado en una variable en python?
- 18. Quiero leer en un archivo desde la línea de comando en python
- 19. Simplemente bifurcando y redireccionando la salida de un comando a/dev/null
- 20. Ejecutando el comando del sistema en Vala
- 21. ¿Se puede usar stdio mientras se codifica un Kernel ...?
- 22. manejo apropiado del shell que se escapa de Python usando os.system
- 23. ¿Cómo puedo ejecutar un comando de línea de comando desde un programa en C++
- 24. procesamiento de salida continua de un comando en python
- 25. Diferencia entre subprocess.Popen y os.system
- 26. Python, os.system for command-line call (linux) no devuelve lo que debería?
- 27. cargar parámetros desde un archivo en Python
- 28. ¿Cómo capturar la salida desde un comando remoto en Capistrano?
- 29. Ejecutar el comando de administración Python/Django desde UnitTest/WebTest
- 30. Redireccionando std :: cout
Mmm ... está bien. Entonces, ¿el comando se ejecuta en la línea P = Popen (...), sí? Y solo mostrará la salida al llamar a p.stdout.read() ... yes? Gracias –
Bien ... los comandos se ejecutaron, pero en un hilo separado. ¿Hay alguna forma de que pueda invocar el programa mientras se ejecutan los comandos o mantenerlo en el mismo hilo? Gracias. –
Simplemente, use p.wait(). Sin embargo, aparentemente esto puede provocar el bloqueo cuando se usa PIPE stdout si el programa genera suficiente salida. Consulte la documentación completa en http://docs.python.org/library/subprocess.html#subprocess.Popen.wait. Sin embargo, creo que debería funcionar ... –