我正在制作一个脚本,将一些其他的脚本输出导入其中。另一个脚本需要一段时间才能完成,并在控制台上打印进度,以及我想要解析的数据。
由于我正在将结果导入我的脚本中,我希望能够做两件事情。当我的输入到达时,我想将其输出到屏幕上。在命令完成后,我希望得到通过stdin传递的行列表。
我的第一个想法是使用一个简单的
由于我正在将结果导入我的脚本中,我希望能够做两件事情。当我的输入到达时,我想将其输出到屏幕上。在命令完成后,我希望得到通过stdin传递的行列表。
我的第一个想法是使用一个简单的
for line in sys.stdin:
sys.stdout.write(line + '\n')
lines.append(line)
sys.stdout.flush()
但令我惊讶的是,该命令会等待 stdin 读取到 EOF 才开始逐行输出。
我的当前解决方法是:
line = sys.stdin.readline()
lines = []
while line:
sys.stdout.write(line.strip() + '\n')
lines.append(line.strip())
sys.stdout.flush()
line = sys.stdin.readline()
但这并不总是等到整个输入都被使用才执行。
还有其他的方法吗?看起来 for 循环的解决方案表现方式很奇怪。