【发布时间】:2020-05-09 14:49:16
【问题描述】:
最近我开始学习 Python,遇到了一个我找不到答案的问题。 该程序的想法是询问用户名,从 JSON 文件加载字典,如果名称在字典中 - 打印用户最喜欢的数字。
加载 JSON 文件的代码如下所示:
import json
fav_numbers = {}
filename = 'numbers.JSON'
name = input('Hi, what`s your name? ')
try:
with open(filename) as f_obj:
fav_numbers = json.load(f_obj)
except FileNotFoundError:
pass
if name in fav_numbers.keys():
print('Hi {}, your fav number is {}, right?'.format(name, fav_numbers[name]))
else:
number = input('Hi {}, what`s your favourte number? '.format(name))
fav_numbers[name] = number
with open(filename, 'w') as f_obj:
json.dump(fav_numbers, filename)
不过,当我尝试运行它时,它崩溃了,告诉我:
Exception has occurred: FileNotFoundError
[Errno 2] No such file or directory: 'numbers.JSON'
File "/home/niedzwiedx/Dokumenty/Python/ulubionejson.py", line 22, in <module>
with open(filename) as f_obj:
我做错了什么来捕获异常? (已尝试将 FileNotFoundError 更改为 OSError 或 IOError)
【问题讨论】:
-
无法复制。这真的是你所有的代码吗?
-
错误可能来自代码中的其他地方。您能否提供更多代码和错误的完整回溯?
-
其实这信息还不够
-
感谢您的快速回复。我添加了完整的代码和错误消息。
-
您编辑的代码不应与提供的错误匹配。如果该文件不存在,则在访问
if fav_numbers[name]:时,它应该在第 13 行失败,并带有KeyError至于您编辑的问题:第 22 行未包含在try..except块中,只有第 8 行和第 9 行。
标签: python exception try-catch file-not-found