使用子進程模塊(Python 2.7),我正在運行一個命令並嘗試在運行時處理其輸出。Python - 從長時間運行的子進程讀取輸出
我有類似下面的代碼:
process = subprocess.Popen(
['udevadm', 'monitor', '--subsystem=usb', '--property'],
stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, ''):
print(line)
然而,只輸出被打印後,我按Ctrl + C,即使我在打印語句後添加sys.stdout.flush()
。
爲什麼會發生這種情況,我該如何直播這個過程的輸出?
值得注意的是,這個udevadm monitor
命令不打算終止,所以我不能簡單地等待進程終止並一次處理其輸出。
我發現live output from subprocess command但接受的答案中的方法並沒有解決我的問題。
參見[段落是開頭的聯繫:「如果子標準輸出採用的是塊緩衝」(http://stackoverflow.com/a/17698359/ 4279) – jfs