程序一次连续打印一行到标准输出。
我试图一次读取并处理该输入的一行,而不必等待程序完成。
作为示例,下面的 writeOutput.py 一次将一行写入 stdout(在每行之间等待 1 到 3 秒)。
调用./writeOutput.py | ./processEachLine.py需要 writeOutput.py 在 processEachLine.py 能够开始处理第一行之前完成。
无论如何,有没有办法在Python中实现这一点?即使直接在 python 程序中调用 writeOutput.py 而不是使用管道?
任何帮助将不胜感激。
写输出.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")
Run Code Online (Sandbox Code Playgroud)
处理每一行.py
#!/usr/bin/env python
import sys
while 1:
line = sys.stdin.readline()
if not line:
break
print(">>" + line)
Run Code Online (Sandbox Code Playgroud)
代替
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
使用
#!/usr/bin/env python -u
Run Code Online (Sandbox Code Playgroud)