一个程序连续每次输出一行到标准输出。
我正在尝试读取和处理这个输入的每一行,而不必等待程序完成。
例如,下面的writeOutput.py会一次写入一行到stdout(在每行之间等待1到3秒)。
调用./writeOutput.py | ./processEachLine.py
需要writeOutput.py完成后,processEachLine.py才能开始处理第一行。
有没有办法在python中实现这一点?即使是直接在python程序中调用writeOutput.py,而不是使用管道?
任何帮助都将不胜感激。
writeOutput.py:
#!/usr/bin/env python
import random
import time
i = 0
while i < 5:
n = int(1 + (random.random()*10) % 3)
i += 1
time.sleep(n)
print(str(n) + " test")
processEachLine.py
#!/usr/bin/env python
import sys
while 1:
line = sys.stdin.readline()
if not line:
break
print(">>" + line)
/usr/bin/env
)和一个参数(python -u
,包括空格,但并不是一个程序,你可以理解为选项)。因此,#!/usr/bin/python -u
有效,而#!/usr/bin/env python -u
无效。参见:https://dev59.com/M2855IYBdhLWcg3wg0nC#4304187 - tzot