我不明白爲什麼它是如此難以做到這一點在Windows上。的Python:在Windows上啓動新的命令提示符,然後等待它完成/退出
我想產卵一堆的命令提示符窗口,將運行其他腳本。我想這樣做的原因是,我可以清楚地看到每個腳本的所有輸出(如果我只是主窗口中的線程/子進程,我無法正確查看所有輸出)。我也不想記錄輸出,因爲它主要是查看進度條,而這些進度條並不適用於日誌文件。
我的要求,所以各個部件的工作,卻不能在一起:
os.system("start cmd /c {command here}") # Launches in new command prompt, closes when done
然而,OS系統不會讓我等待命令完成(因爲開始是實際的命令,第二它打開新的命令提示符是「完成」)
同樣的,如果我嘗試:
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)
那麼,如何做到這一點?我讀過一個解決方案可能是使用processgroup,但它只是unix ....或類似的東西
或者,如果你有一個簡單的方法來顯示所有子進程的輸出在一個窗口中,那麼我不會不需要打開新的命令提示符並且可以簡單地使用線程。這也是有效的,但如果我讓4個線程下載一些東西並顯示進度條以及輸出其他信息,我不知道如何以可讀的方式顯示它(以及避免它們全部碰撞彼此)。
PS:這是在Windows Vista上。 PPS:我最好喜歡一個適用於Windows,Linux和Mac的解決方案,我現在專注於Windows,但我想要一個適用於所有三種解決方案的解決方案,而且我知道Windows是最挑剔的。我只是將「start cmd/c」替換爲OS適當的命令。
是否有您使用「開始」的理由VS使用「加利福尼亞」作爲命令? – Joe 2012-07-23 15:21:49
我發現只有這樣才能打開一個新的命令提示符,如果還有其他方法可以使用 – robev 2012-07-23 15:23:43