[英]When does sys.stdin await input?
确定sys.stdin
是否等待用户输入的规则是什么? 例如:
>>> sys.stdin
# <_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>
>>> "".join(sys.stdin)
# <awaiting input...>
第二行等待输入,即使我没有“调用” sys.stdin
或任何东西,那么 python 如何知道以及等待时的规则是什么?
最后,是否可以在没有尾随\\n
情况下进入sys.stdin
? 例如:
>>> "".join(sys.stdin)
hello
'hello\n'
要退出,我必须执行Return ctrl-d 。 我可以在没有\\n
情况下获得输入吗?所以我只需要在最后执行rstrip()
或类似的操作吗?
第二个用例是使用文件对象是迭代器这一事实; 它隐含调用sys.stdin
的__next__
以上方法又一遍,直到它引发StopIteration
。 由于它运行到完成,而不仅仅是一行,因此在sys.stdin
关闭(通常是另一端)之前它不会返回。 所以答案就是你的想法,只是你没有意识到调用迭代器协议算作一种“调用”形式。
如果你只想要一行输入,最后没有换行符,只需使用input
函数(从sys.stdin
隐式提取结果,但只有一行,它不会等到它关闭)。 否则,您将无法手动剥离换行符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.