Non capisco perché sia così difficile farlo su Windows.Python: Avvia il nuovo prompt dei comandi su Windows e attendi che finisca/esca
Voglio generare una serie di finestre del prompt dei comandi che eseguiranno altri script. La ragione per cui voglio questo è che posso vedere tutti gli output di ogni script in modo ordinato (se li ho appena sono thread/processi secondari nella finestra principale non riesco a visualizzare correttamente tutti gli output). Inoltre, non voglio registrare l'output perché è principalmente per visualizzare le barre di avanzamento, che in realtà non funzionano con i file di registro.
parti Quindi individuali delle mie esigenze di lavoro, ma non insieme:
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
Tuttavia, il sistema operativo non mi lascia attendere il termine del comando (da inizio è il comando vero e proprio, il secondo si apre la nuovo prompt dei comandi che è "fatto")
Allo stesso modo se provo:
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)
Allora, come faccio a fare questo? Ho letto da qualche parte che una soluzione potrebbe essere usare processgroup ma è unix solo .... o qualcosa del genere
Oppure, se si dispone di un modo pulito per visualizzare l'output da tutti i sottoprocessi in una singola finestra, allora non Non è necessario aprire un nuovo prompt dei comandi e utilizzare semplicemente i thread. Anche questo funziona, ma se ho lasciato dire 4 thread scaricando qualcosa e visualizzando una barra di avanzamento oltre che emettere altre informazioni non so come visualizzarlo in un modo che possa essere letto (oltre a evitare che si scontrino tutti con l'un l'altro).
PS: Questo è in Windows Vista. PPS: preferirei una soluzione che funziona su Windows, Linux e Mac, per ora mi sto concentrando su Windows ma mi piacerebbe una soluzione che funzioni per tutti e tre, e so che Windows è il più pignolo. Sostituirei semplicemente "start cmd/c" per il comando appropriato del sistema operativo.
C'è una ragione che si sta utilizzando 'start' VS utilizzando 'cmd' come il vostro comando? – Joe
Solo il modo in cui ho trovato di aprire un nuovo prompt dei comandi, se c'è un altro modo che va bene – robev