Python3 json文件为空时的问题

.json文件在’w’的模式下存储数据时出错导致文件的数据被删除而为空。
后续检查无误却一直出错,错误类型:

*raise JSONDecodeError("Expecting value", s, err.value) from None
**json.decoder.JSONDecodeError**: Expecting value: line 1 column 1 (char 0)*

改正方法:

try:
	-----snip-----
except json.decoder.JSONDecodeError

示例:(新手上路,格式胡乱)

import json
"""验证用户,若为新用户则储存新用户名"""

def greet_user():
    """问候"""
    try:
        with open('username.json') as f_obj:
            user_old = json.load(f_obj)
            
    except json.decoder.JSONDecodeError:
        """文件如果空时会出错"""
        get_new_username()
        
    else:
            print("Your name is " + user_old)
            answer = input()
            
            if answer.lower() == 'y':
                print('Hello ' + user_old)
            else:
                get_new_username()
        
def get_new_username():
    """获取新的用户名"""
    with open('username.json', 'w') as f_obj:
        name = input("Your name: ")
        json.dump(name, f_obj)

greet_user()

错误找了很久,才发现可能这个不对,特此记录,铭记于心。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值