正如在回答中提出我的問題「Python: start terminal program and parse its output while it's running」我使用的是子結構與程序進行通信:蟒子更新其行( r) - 我需要在每次更新
server = subprocess.Popen(["meteor", "--port", port], stdout=subprocess.PIPE)
for line in iter(server.stdout.readline, ""):
# Do something for example
print(line)
的問題是:子進程(服務器)不直接用換行符結束每行,因爲它將(x2)放在行尾,當消息重複時。
但我想對每一行更新作出反應。所以我想要處理\r
像\n
,而不是隻遍歷完成的線,我想遍歷可用的字符串,直到下一個「暫停」,它是一個\r
或\n
或另一個換行符,直接獲取信息時,不僅在服務器發送\n
時。我怎樣才能做到這一點?
輸出緩衝處於正在運行的程序的控制之下,如果不沖刷每個字符上的緩衝區,則可以做的事情不多。 – 2014-09-24 02:18:13
@MarkRansom'Popen.stdout'默認沒有緩存 - 問題是'readline',不是? – roippi 2014-09-24 02:21:05
在這種情況下,請勿使用'readline',請使用'read'。 – 2014-09-24 02:21:34