Python速成班:json.decoder.jsondeCoderror:期望值:第1行第1列(字符0)

Python速成班:json.decoder.jsondeCoderror:期望值:第1行第1列(字符0),python,json,python-3.x,Python,Json,Python 3.x,Python速成课程第2版中的编码和运行练习新手。其中一个练习涉及创建一个名为“memory_me.py”的文件,据我所知,我几乎是一字不差地输入了书中的代码,但出现了一个错误: """Exercise for Python Crash Course.""" import json #Load the username, if it has been stored previously. #Otherwise, prompt for the username and store it. fil

Python速成课程第2版中的编码和运行练习新手。其中一个练习涉及创建一个名为“memory_me.py”的文件,据我所知,我几乎是一字不差地输入了书中的代码,但出现了一个错误:

"""Exercise for Python Crash Course."""
import json

#Load the username, if it has been stored previously.
#Otherwise, prompt for the username and store it.
filename = 'username.json'
try:
    with open(filename) as f:
        username = json.load(f)
except FileNotFoundError:
    username = input("What is your name?\n")
    with open(filename, 'w') as f:
        json.dump(username, f)
        print(f"We'll remember you when you come back, {username}!")
else:
    print(f"Welcome back, {username}!")
每当我尝试运行它时,我都会得到以下回溯(我在这里将用户名替换为“我”):

回溯(最近一次呼叫最后一次):
文件“C:\Users\me\Desktop\python\u work\memory\u me.py”,第9行,在
username=json.load(f)
文件“C:\Users\me\AppData\Local\Programs\Python38-32\lib\json\\ uu_init\u_.py”,第293行,已加载
返回加载(fp.read(),
文件“C:\Users\me\AppData\Local\Programs\Python38-32\lib\json\\ uu_init\u_.py”,第357行,加载
返回\u默认\u解码器。解码
文件“C:\Users\me\AppData\Local\Programs\Python38-32\lib\json\decoder.py”,第337行,在decode中
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“C:\Users\me\AppData\Local\Programs\Python38-32\lib\json\decoder.py”,第355行,原始解码
从None引发JSONDecodeError(“预期值”,s,err.value)
json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)

知道我做错了什么吗?我尝试从头开始重新键入,但显然我犯了同样的错误!

用户名.json中有什么内容?空文件不是有效的json,会导致此错误。代码假设第一次运行脚本时,
用户名.json
文件不存在。它创建下载它,然后下次使用它。
json.load(f.read())
?我已经用一个名为“username.json”的现有文件尝试了这两种方法没有一个,FWIW,同样的错误。@Barmar是正确的,在本章的上下文中,程序的目的是假设文件不存在,然后创建它以供下次使用。我看不出它不起作用的任何原因。这是在文件不存在的情况下第一次运行脚本时发生的,还是在您来到b时发生的阿克?
Traceback (most recent call last):
  File "C:\Users\me\Desktop\python_work\remember_me.py", line 9, in <module>
    username = json.load(f)
  File "C:\Users\me\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "C:\Users\me\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\me\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\me\AppData\Local\Programs\Python\Python38-32\lib\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)