我需要實現一個逐行讀取其他進程的輸出的python腳本。很顯然,我曾嘗試使用「subprocess」來獲取stdout的輸出過程。但是我無法實時獲得輸出,事實上每次python腳本都會在進程啓動後的幾個時間塊內返回輸出。對於爲例我用這個python腳本:要讀取如何用python實時讀取輸出過程?
import subprocess as sub
import sys
proc = sub.Popen(["python", "bin/read_test.py"],
stdout = sub.PIPE,
bufsize = 1)
while True:
if proc.poll() is None:
line = proc.stdout.read()
line = line.decode("utf-8")
print(line, flush = True)
sys.stdout.flush()
else:
proc.stdout.close()
break
read_test.py腳本:
from time import sleep
for i in range(5):
print(i)
sleep(1)
我已經嘗試了很多方法用「的ReadLine()」與循環,但問題還是一樣。
此外,我不想使用「溝通」,因爲它是一種阻止方法。
感謝您的幫助,
可能的複製(http://stackoverflow.com/questions/ 2804543/read-subprocess -stdout-line-line) – pltrdy