2015-06-19 46 views
1

我正在寫一個gui包裝到python的bash命令中。當bash命令運行時,前3-4行是不變的,最後一行被覆蓋以顯示文本格式的進度。我想將這個進度轉換成一個進度條,轉換成一個基於python的gui。在Python中定期獲取輸出的bash命令

如何定期檢索bash命令的進度?所有其他類似的答案都會檢索前幾個常量行,但它們無法獲取週期性更改的最後一行。

回答

1

如果您正在使用process.stdout.readline()讀取輸入,那麼它將不會獲取進度,直到整行打印到標準輸出爲止。相反,您可以通過逐字符流讀取stdout,如下所示:

import subprocess 
import sys 
process = subprocess.Popen("ls", stdout=subprocess.PIPE) 
for c in iter(lambda: process.stdout.read(1), ''): 
    sys.stdout.write(c) 
相關問題