gpt4 book ai didi

python - 从 stdin 读取时出现 EOF 错误 - Python3

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

当我运行此脚本并按 CTR-D 结束对程序的输入时,收到以下错误:

错误:

My-MacBook-Pro-2:python me$ python3 test.py 
>> Traceback (most recent call last):
File "test.py", line 4, in <module>
line = input(">> ")
EOFError

脚本

import sys

while(1):
line = input("Say Something: ")
print(line)

为什么会发生这种情况?

最佳答案

这不太可能对 Apollo 有帮助(此外,问题是 4 年前的问题),但这可能对像我这样的人有帮助。

我也遇到了同样的问题,并且无需按任何键,相同的代码将立即终止并出现 EOFError。就我而言,罪魁祸首是之前在同一终端中执行的另一个脚本,该脚本已将 stdin 设置为非阻塞模式。

如果原因相同,这应该有帮助:

flag = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL, flag & ~os.O_NONBLOCK)

我确定了有问题的 Python 脚本并进行了更正。其他带有 input() 的脚本现在可以在它之后正常工作。

编辑(加上上面的几个错别字):这应该让你看看 STDIN 是否是非阻塞模式:

import os
import sys
import fcntl
flag = fcntl.fcntl(sys.stdin.fileno(), fcntl.F_GETFL)
print(
"STDIN is in {} mode"
.format(
("blocking", "non-blocking")[
int(flag & os.O_NONBLOCK == os.O_NONBLOCK)
]
)
)

关于python - 从 stdin 读取时出现 EOF 错误 - Python3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26307912/

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