No entiendo por qué es tan difícil hacer esto en Windows.Python: inicia un nuevo símbolo del sistema en Windows y espera a que termine/salga
Quiero generar una serie de ventanas de símbolo del sistema que ejecutarán otras secuencias de comandos. La razón por la que quiero esto es para poder ver claramente todos los resultados de cada secuencia de comandos (si los tengo solo son hilos/subprocesos en la ventana principal, no puedo ver todos los resultados correctamente). Tampoco quiero registrar el resultado porque es principalmente para ver las barras de progreso, que realmente no funcionan con los archivos de registro.
partes Así individuales de mis requisitos de trabajo, pero no juntos:
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
Sin embargo, el sistema OS no me deja esperar hasta que finalice el comando (desde el inicio es el comando real, el segundo se abre la nuevo símbolo del sistema es "hecho")
Del mismo modo si trato:
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 lo hago? Leí en alguna parte que una solución podría ser usar un grupo de procesos, pero solo es unix ... o algo así
O si tiene una forma ordenada de mostrar el resultado de todos los subprocesos en una sola ventana, entonces no No es necesario abrir un nuevo símbolo del sistema y simplemente puede usar hilos. Eso también funciona, pero si tengo que decir 4 hilos descargando algo y mostrando una barra de progreso, así como generando otra información, no sé cómo mostrar eso de forma que pueda leerse (y evitar que todos choquen con El uno al otro).
PD: Esto es en Windows Vista. PPS: Preferiría una solución que funciona en Windows, Linux y Mac, me estoy enfocando en Windows por ahora pero me gustaría una solución que funcione para las tres, y sé que Windows es la más delicada. Simplemente sustituiría "el inicio cmd/c" por el comando apropiado del sistema operativo.
¿Hay una razón por la que está utilizando 'inicio' vs utilizando 'cmd' como su comando? – Joe
La única forma que he encontrado para abrir un nuevo símbolo del sistema, si hay otra manera que está bien – robev