正如在回答中提出我的问题“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