【发布时间】:2015-12-18 15:20:47
【问题描述】:
我正在制作一个脚本,其中包含一些其他脚本输出。另一个脚本需要一段时间才能完成,并将进度连同我要解析的数据一起打印到控制台上。
由于我将结果传送到我的脚本,我希望能够做两件事。当我的输入出现时,我想将它回显到屏幕上。命令完成后,我想要一个通过标准输入的行列表。
我的第一个想法是使用一个简单的
for line in sys.stdin:
sys.stdout.write(line + '\n')
lines.append(line)
sys.stdout.flush()
但令我惊讶的是,该命令一直等到标准输入到达 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 解决方案的行为方式似乎很奇怪。
【问题讨论】:
-
我用 | 管道。 Mac OSX
-
你能澄清你的意思吗?“......这并不总是等到整个输入被使用。”您的解决方法脚本对我来说很好。