script programa otro interprete ejecutar desde cómo compilar como archivo python subprocess

programa - ¿Cómo puedo generar nuevos shells para ejecutar scripts de Python desde un script de Python base?



ejecutar un script en python 3 (3)

He ejecutado con éxito varios scripts de Python, llamándolos desde un script base utilizando el módulo de subproceso:

subprocess.popen([sys.executable, ''script.py''], shell=True)

Sin embargo, cada uno de estos scripts ejecuta algunas simulaciones (archivos .exe desde una aplicación C ++) que generan algunos resultados al shell. Todas estas salidas se escriben en el shell base desde donde lancé esos scripts. Me gustaría generar un nuevo shell para cada script. He intentado generar shells nuevos utilizando el atributo shell=True al llamar a subprocess.call (también se ha probado con popen), pero no funciona.

¿Cómo obtengo un nuevo shell para cada proceso generado con subprocess.call?

Estaba leyendo la documentación sobre stdin y stdout como lo sugirió Spencer y encontré una marca para resolver el problema: subprocess.CREATE_NEW_CONSOLE. Tal vez la redirección de las tuberías haga el trabajo también, pero esta parece ser la solución más simple (al menos para este problema específico). Acabo de probarlo y funcionó perfectamente:

subprocess.popen([sys.executable, ''script.py''], creationflags = subprocess.CREATE_NEW_CONSOLE)


Esto en realidad no responde a su pregunta. Pero también he tenido mis problemas con el subproceso, y pexpect resultó ser realmente útil.


Para abrir en una consola diferente, haga (probado en Windows 7 / Python 3):

from sys import executable from subprocess import Popen, CREATE_NEW_CONSOLE Popen([executable, ''script.py''], creationflags=CREATE_NEW_CONSOLE) input(''Enter to exit from this launcher script...'')


Popen ya genera un subproceso para manejar las cosas. Solo necesitas redireccionar los tubos de salida. Mire la documentación del subprocess , específicamente la sección sobre popen stdin, stdout y stderr redirection.

Si no redirecciona estos conductos, los hereda del padre. Solo ten cuidado de no bloquear los procesos.

Querías ventanas adicionales para cada subproceso. Esto se maneja también. Mira la sección startupinfo del subproceso. Explica qué opciones configurar en Windows para generar un nuevo terminal para cada subproceso. Tenga en cuenta que requiere el uso de la opción shell = True.