急切地从stdin Python返回行
发布时间:2020-12-20 11:47:48 所属栏目:Python 来源:网络整理
导读:我正在创建一个脚本,其中包含一些其他脚本输出管道.另一个脚本需要一段时间才能完成,并将进度与我要解析的数据一起打印到控制台上. 由于我将结果传递给我的脚本,我希望能够做两件事.随着我的输入,我想在屏幕上回应它.命令完成后,我想要一个通过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解决方案的行为方式似乎很奇怪. 解决方法
Python使用缓冲输入.如果你查看python –help,你会看到:
-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x 因此,尝试使用以下内容的无缓冲选项: command | python -u your_script.py (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |