Python: inicie el nuevo indicador de comando en Windows y espere a que finalice / salga
No entiendo por qué es tan difícil hacer esto en Windows.
Quiero generar un montón de ventanas de símbolo del sistema que ejecutarán otros scripts. La razón por la que quiero esto es que puedo ver todos los resultados de cada secuencia de comandos (si los tengo solo como subprocesos o subprocesos en la ventana principal, no puedo ver todos los resultados correctamente). Tampoco quiero registrar la salida porque es principalmente para ver las barras de progreso, que en realidad no funcionan con los archivos de registro.
Así que las partes individuales de mis requisitos funcionan, pero no juntas:
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
Sin embargo, el sistema operativo no me deja esperar hasta que finalice el comando (ya que start es el comando real, en el segundo que abre el nuevo símbolo del sistema está "listo")
Del mismo modo si intento:
p = subprocess.Popen(["start", "cmd", "/k", "{command here}], shell = True) # Needs to be shell since start isn't an executable, its a shell cmd
p.wait() # I can wait until finished (although it too finishes after start finishes)
Entonces, ¿cómo hago esto? Leí en alguna parte que una solución podría ser usar processgroup pero solo es unix ... o algo así
O si tiene una forma clara de mostrar los resultados de todos los subprocesos en una sola ventana, entonces no necesito abrir un nuevo indicador de comandos y simplemente puedo usar subprocesos. Eso también funciona, pero si tengo que decir, 4 subprocesos descargando algo y mostrando una barra de progreso, además de mostrar otra información, no sé cómo mostrar eso de una manera que pueda leerse (además de evitar que chocen con ellos El uno al otro).
PS: Esto está en Windows Vista. PPS: Preferiblemente me gustaría una solución que funcione en Windows, Linux y Mac. Por ahora me estoy enfocando en Windows, pero me gustaría una solución que funcione para los tres, y sé que Windows es la más meticulosa. Simplemente sustituiría "el inicio cmd / c" por el comando apropiado del sistema operativo.