gpt4 book ai didi

Python - 非空行后的 Readline Control-D 不起作用为什么?

转载 作者:行者123 更新时间:2023-11-30 23:44:26 25 4
gpt4 key购买 nike

我是Python新手,如果我的要求看起来很奇怪,我很抱歉。我想循环标准输入上的每一行,并立即将修改后的行返回到标准输出。我的代码大部分都可以工作。但是我不知道如何才能完全完成这项工作。

我有以下代码

while True:
line = sys.stdin.readline()

if not line:
break

sys.stdout.write(line)

当以交互方式使用时,如果新行上有 EOF,它将退出,但是如果在我键入 Control-D 之前有文本,我必须在退出该行之前给出代码两次,然后在循环将退出。

我该如何解决这个问题。

最佳答案

我认为我的回答来自 here可以立即复制:

It has to do with ^D really does: it just stops the current read(2) call.

If the program does int rdbytes = read(fd, buffer, sizeof buffer); and you press ^D inbetween, read() returns with the currently read bytes in the buffer, returning their number. The same happens on line termination; the \n at the end is always delivered.

So only a ^D at the start of a line or after another ^D has the desired effect of having read() return 0, signalizing EOF.

当然,这种行为也会影响 Python 代码。

关于Python - 非空行后的 Readline Control-D 不起作用为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10089730/

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