Python:FileNotFoundError未被try-except块捕获
最近我开始学习Python,遇到了一个我找不到答案的问题。 该程序的思想是请求用户名,从JSON文件加载一个字典,如果字典中有名字,则打印用户最喜欢的号码 加载JSON文件的代码如下所示:Python:FileNotFoundError未被try-except块捕获,python,exception,try-catch,file-not-found,Python,Exception,Try Catch,File Not Found,最近我开始学习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
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
[Errno 2]没有这样的文件或目录:“numbers.JSON”
文件“/home/niedzwiedx/Dokumenty/Python/uluboionejson.py”,第22行,在
打开(文件名)作为f_obj:
我做错了什么来捕捉异常?(已尝试将FileNotFoundError更改为OSError或IOError)错误来自上一行,在您的try/except之外 打开(文件名为“w”)作为f_obj的
:
json.dump(fav_编号、文件名)
文件名是字符串,不是文件
你必须使用
打开(文件名为“w”)作为f_obj的:
json.dump(fav_编号,f_obj)
为了增加安全性,您也可以使用try/except环绕此零件
试试看:
打开(文件名为“w”)作为f_obj:
json.dump(fav_编号,f_obj)
除了(FileNotFoundError,PremissionError):
打印(“无法创建JSON文件来保存数据”)
无法复制。这真的是您的全部代码吗?错误可能来自代码中的其他地方。你能提供更多的代码和错误的完整回溯吗?实际上这还不够,谢谢你的快速回复。我添加了完整代码和错误消息。您编辑的代码与提供的错误不匹配。如果文件不存在,当访问
如果fav_numbers[name]:
时,它应该在第13行失败,并出现键错误。
至于您编辑的问题:第22行没有包装在try中。
块除外,只有第8行和第9行是正确的。