Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:FileNotFoundError未被try-except块捕获_Python_Exception_Try Catch_File Not Found - Fatal编程技术网

Python:FileNotFoundError未被try-except块捕获

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

最近我开始学习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 [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行是正确的。