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_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)
但是如果我在 favoritenumber.json 中输入一个数字,例如 43,然后再次运行程序,程序运行成功,我得到这个输出:
your favorite number is 43
你能解释一下为什么会发生这种情况,以及如何在不需要以前的数据的情况下使程序成功运行吗?
解决方案
在tell_favorite_number()
尝试更换
favorite_number = get_favorite_number()
和
try:
favorite_number = get_favorite_number()
except:
favorite_number = 0
推荐阅读
- azure - Hololens项目Azure消费
- javascript - Sequelize - 仅包括找到一个结果
- node.js - 如何使用 NodeJs 实现 Google App 引擎冗余
- git - 获取 ssh git@github.com:权限被拒绝(公钥)
- laravel - Laravel 验证器总是失败
- arduino - 我如何在 Arduino 中进行协作?
- python - 如何使用 twilio-python 处理拨号状态
- python - 使用 Python 将 Firewall Syslog Entires 中的结构化字符串数据解析为 dict
- python - 使用标签和索引在熊猫数据框中设置值,现在不推荐使用 ix
- java - 我在 java 邮件 API 的身份验证过程中遇到错误