我正在尝试使用peewee模块在用户输入的数据库中保存多个文本,但是当我在控制台中按ctrl + d时,它给了我EOFError。我认为问题出在sys.stdin.read()上。我解决这个问题? 这是代码:
enter 'q' to quit
a) add an entry
v) view entries
action: a
Enter your entry. press ctrl+d when finished
some text
and more
^D
Save Entry?[Yn]Traceback (most recent call last):
File "C:/Users/Xylose/Desktop/small lab/peewee/venv/dairy.py", line 61, in <module>
menu_loop()
File "C:/Users/Xylose/Desktop/small lab/peewee/venv/dairy.py", line 34, in menu_loop
menu[choice]()
File "C:/Users/Xylose/Desktop/small lab/peewee/venv/dairy.py", line 42, in add_entry
if input('Save Entry?[Yn]').lower()!='n':
EOFError: EOF when reading a line
Process finished with exit code 1
这是我在pycharm中遇到的错误:
g = sns.FacetGrid(masterdata,row="departmentid",col = "coursename",hue="resulttype",size=5, aspect=1)
g=g.map(plt.scatter, "totalscore", "semesterPercentage")
答案 0 :(得分:2)
在Python中
EOFError: EOF when reading a line
此错误有两个原因
1。以错误的方式/格式读取文件
import sys
for line in sys.stdin:
print (line)
这是我们如何使用“ sys.stdln”进行阅读的方法
2。如果文件已损坏,则有另一个机会发生相同的错误
答案 1 :(得分:1)
通常允许在Ctrl-D之后从stdin读取,但是我仅在Ubuntu上进行了测试(与您的代码相似的代码运行良好)。我看到它正在Windows上运行,并且Windows控制台的行为可能有所不同,并在Ctrl-D之后拒绝任何read()操作。一种可能的解决方案是使用try / except语句捕获EOFError
异常,并在异常发生时关闭并重新打开sys.stdin。像这样:
# note: check that sys.stdin.isatty() is True!
try:
# read/input here
except EOFError:
sys.stdin.close()
sys.stdin = open("con","r")
continue # or whatever you need to do to repeat the input cycle