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

我是一名初学者,正在学习用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_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