gpt4 book ai didi

python - 检测到 EOF 时未读取标准输入的最后一行

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:40 24 4
gpt4 key购买 nike

可能是一个简单的问题,但我基本上是在尝试复制 cat 命令的行为(非常稀疏和简单),但在 python 中。我希望用户能够输入他们想要的所有文本,然后当他们输入 EOF(通过按 ctrl+dcmd+d)时,程序应该打印输出他们输入的所有内容。

import sys
for line in sys.stdin:
print line

如果我输入输入行并在最后一行后跟一个回车符,然后按 cmd+d:

never gonna give you up
never gonna let you down
never gonna run around
and desert you

那么输出是

never gonna give you up
never gonna let you down
never gonna run around
and desert you

但是,如果我仍在最后一行“and desert you”时按 cmd+d,则输出为:

never gonna give you up
never gonna let you down
never gonna run around

我如何修改程序,如果用户在最后一行按下 EOF,那么它仍应作为输出的一部分包含在内?

最佳答案

Control-D 的行为实际上是操作系统的 TTY 驱动程序的功能,而不是 Python 的功能。 TTY 驱动程序通常一次向程序发送整行数据。您会注意到“cat”和大多数其他程序的行为方式相同。

完成您要求的事情并非易事。它通常需要将 TTY 置于原始模式,读取和处理数据(你会得到 Control-D 字符本身),然后在退出前将其从原始模式中取出(你不想在原始模式下退出!)

执行此操作的过程取决于 O/S,但您可以使用 tty.setraw() 和 tty.setcbreak()。

关于python - 检测到 EOF 时未读取标准输入的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com