1
我正在寫一個gui包裝到python的bash命令中。當bash命令運行時,前3-4行是不變的,最後一行被覆蓋以顯示文本格式的進度。我想將這個進度轉換成一個進度條,轉換成一個基於python的gui。在Python中定期獲取輸出的bash命令
如何定期檢索bash命令的進度?所有其他類似的答案都會檢索前幾個常量行,但它們無法獲取週期性更改的最後一行。
我正在寫一個gui包裝到python的bash命令中。當bash命令運行時,前3-4行是不變的,最後一行被覆蓋以顯示文本格式的進度。我想將這個進度轉換成一個進度條,轉換成一個基於python的gui。在Python中定期獲取輸出的bash命令
如何定期檢索bash命令的進度?所有其他類似的答案都會檢索前幾個常量行,但它們無法獲取週期性更改的最後一行。
如果您正在使用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)