【发布时间】:2021-05-02 11:13:22
【问题描述】:
一个小程序,从用户输入中读取名称,在 json 文件中查找名称,并根据情况问候或保存用户。如果找不到文件,则创建文件。:
import json as j
import sys
fn = 'usernames.json'
def loadnames(f):
#load usernames to memory
try:
n = []
with open(f, 'r') as fo:
strings = j.load(fo)
for s in strings: #assuming that it won't be a whole string
n.append(s)
return n
except FileNotFoundError:
with open(f, 'w') as fo:
pass
sys.exit()
def getname():
name = input("Name:\t")
return name
names = loadnames(fn)
name = getname()
with open(fn, 'w') as fo:
if name in names:
print(f"Welcome back, {name}.")
else:
print(f"We don't know you, {name}. We will save you to the list.")
names.append(name)
for n in names:
j.dump(n, fo)
输出(当文件存在时):
└─$ python3 rememberme.py 1 ⨯
Traceback (most recent call last):
File "/home/salt/Desktop/py/rememberme.py", line 57, in <module>
names = loadnames(fn)
File "/home/salt/Desktop/py/rememberme.py", line 42, in loadnames
strings = j.load(fo)
File "/usr/lib/python3.9/json/__init__.py", line 293, in load
return loads(fp.read(),
File "/usr/lib/python3.9/json/__init__.py", line 346, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
不确定我是否理解这个错误。这个错误是关于什么的?
【问题讨论】:
-
可以分享一下 JSON 文件吗?
-
@charmful0x 在保存输入之前它实际上是空的
标签: python json python-3.x parsing