Python 如何写入空json文件?
我是一名初学者,正在学习用python编写代码。我目前正在尝试学习json。我正在开发一个简单的程序来存储你最喜欢的号码 代码如下:Python 如何写入空json文件?,python,json,Python,Json,我是一名初学者,正在学习用python编写代码。我目前正在尝试学习json。我正在开发一个简单的程序来存储你最喜欢的号码 代码如下: import json def get_new_favorite_number(): favorite_number = input('please enter your favorite number') filename = 'favorite_number.json' with open(filename, 'w') as f_ob
import json
def get_new_favorite_number():
favorite_number = input('please enter your favorite number')
filename = 'favorite_number.json'
with open(filename, 'w') as f_obj:
json.dump(favorite_number, f_obj)
def get_favorite_number():
filename = 'favorite_number.json'
with open(filename) as f_obj:
favorite_number = json.load(f_obj)
return favorite_number
def tell_favorite_number():
favorite_number = get_favorite_number()
if favorite_number:
print('your favorite number is ' + str(favorite_number))
else:
favorite_number = get_new_favorite_number()
tell_favorite_number()
如果尝试运行代码,则会出现以下错误:
Traceback (most recent call last):
File "favorite_number.py", line 23, in <module>
tell_favorite_number()
File "favorite_number.py", line 16, in tell_favorite_number
favorite_number = get_favorite_number()
File "favorite_number.py", line 12, in get_favorite_number
favorite_number = json.load(f_obj)
File "C:\Python\lib\json\__init__.py", line 293, in load
return loads(fp.read(),
File "C:\Python\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\Python\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Python\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 1)
您能解释一下为什么会发生这种情况,以及如何使程序在不需要以前的数据的情况下成功运行吗?您应该检查try except blocks
出现此错误是因为json库试图解码不存在的值
您可以简单地将号码存储在文本文件中,或处理异常。在except块中,您可以拨打get_new_favorite_号码
将您的值存储在文本文件中,您可以轻松地手动编辑它。在告诉您最喜欢的号码中尝试替换
favorite_number = get_favorite_number()
与
可能最好在调用json库的函数时直接处理它的错误。
import json
def get_new_favorite_number():
favorite_number = input('please enter your favorite number')
filename = 'favorite_number.json'
with open(filename, 'w') as f_obj:
json.dump(favorite_number, f_obj)
def get_favorite_number():
filename = 'favorite_number.json'
with open(filename) as f_obj:
try:
favorite_number = json.load(f_obj)
except:
favorite_number = None
return favorite_number
def tell_favorite_number():
favorite_number = get_favorite_number()
if favorite_number is not None:
print('your favorite number is ' + str(favorite_number))
else:
favorite_number = get_new_favorite_number()
favorite_number = get_favorite_number()
try:
favorite_number = get_favorite_number()
except:
favorite_number = 0