2012-12-24 50 views
-1

我有一個主程序,用戶可以在其中幾次調用子進程(下載文件)。每次我使用子進程調用aria2c,它會將進度打印到標準輸入。當然,用戶可以單獨看到每次下載的進度。Python:將輸出重定向到幾個控制檯?

所以,問題是我如何在每個過程的輸出重定向到一個單獨的控制檯窗口?

回答

0

我有點困惑。使用subprocess.Popen(...)應該爲每次調用自動產生一個新的命令提示符。什麼是aria2c?這是一個你用python編寫的程序嗎?它是寫入命令提示符窗口的第三方exe文件嗎?

我可以幫你重定向所有輸出子進程的主要命令提示符下,因此它可以顯示在線。

另外,也許你可以給什麼首先要在更詳細一點,所以我能理解你的麻煩會好一點。

+0

Aria2c是第三方程序。奇怪的是,即使subprocess.Popen被多次調用,也只有一個命令提示符處於打開狀態。我使用的確切命令是「Popen(command,shell = True)」。而且,這將允許多個進程同時運行(而不必等待上一個命令完成)? – user1865009

+0

當您使用subprocess.Popen時,您可以同時運行多個進程。我使用這是一個馬爾可夫鏈模擬,我在同一時間運行多個鏈(爲了節省時間)。最初我的腳本會打開5個不同的命令提示符窗口,並顯示輸出,但我認爲最好將輸出重定向到主窗口,在那裏我可以顯示每個進程的內聯。當進程完成並退出時,我會將其處理爲默認輸出爲「完成」。 另外,你運行這個是Linux還是Windows? –

+0

還有一件事,就是子庫可以是一個小馬車,所以你可能需要創建線程類,併產生新的線程來運行Aria2c。這可能會慢很多(取決於如何處理aria2c) 我可能建議在python中創建一個子模塊,通過os.system(...)調用該程序,並且您的主腳本可以調用子進程.Popen( )在這個子模塊上使用給定的sys.argv來在系統調用中使用 但是,如果你使用os.system(...)通過python在單個case上運行該程序,是否會彈出一個窗口並顯示輸出? –

相關問題