繁体   English   中英

sys.stdin 什么时候等待输入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM