记录一下,找久没摸代码然后就好久才解决…
重要的就是看报错,然后有什么异常,加到except里就行
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
可以看到异常是,json.decoder.JSONDecodeError
所以直接加上就好了
try:
with open(file_name) as f:
user = json.load(f)
injuge = input(f"are you {user} ? yes or no\n")
if injuge == 'yes':
print(f"hello {user}")
else:
get_new_username()
except json.decoder.JSONDecodeError:
get_new_username()
横线下面是从别人那学习的,如果您能看的到原网页的话,非常建议去看一下原作者的blog(当作扩展了
链接:https://bobbyhadz.com/blog/python-json-decoder-jsondecodeerror-expecting-value-line-1-column-1-char-0
json.load方法用于将文件反序列化为 Python 对象,而 json.loads方法用于将 JSON 字符串反序列化为 Python 对象。
原因一当尝试错误地读取 JSON 文件或尝试读取空的 JSON 文件或包含无效 JSON 时,通常会导致该错误。
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
my_data = json.load(f)
print(my_data) # 👉️ {'name': 'Alice', 'age': 30}
"""example.json该示例假定在同一目录中有一个名为的文件。
确保您正在读取的文件不是空的,因为这通常会导致错误。
"""
错误的另一个常见原因是在尝试从 JSON 文件读取时将文件名传递给方法。 json.loads()
该
json.load()
方法需要一个文本文件或包含实现.read()
方法的 JSON 文档的二进制文件。或者,您手动调用
read()
文件对象上的方法并使用该json.loads()
方法
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
# 👇️ make sure to call read()
my_data = json.loads(f.read())
print(my_data) # 👉️ {'name': 'Alice', 'age': 30}
print(type(my_data)) # 👉️ <class 'dict'>
链接:https://bobbyhadz.com/blog/python-attributeerror-str-object-has-no-attribute-read
AttributeError: ‘str’ 对象没有属性 ‘read’
当我们
read()
在字符串(例如文件名)而不是文件对象上调用方法或json.load()
错误地使用该方法时,会出现 Python “AttributeError: ‘str’ object has no attribute ‘read’”。要解决此错误,请read()
在打开文件后调用文件对象上的方法。
file_name = 'example.txt'
with open(file_name, encoding='utf-8') as f:
# ⛔️ AttributeError: 'str' object has no attribute 'read'
read_data = file_name.read()
print(read_data)
我们尝试read()
在文件名字符串而不是导致错误的文件对象上调用该方法。
如果您正在从文件中读取,请确保改为read()
在文件对象上调用该方法。
file_name = 'example.txt'
with open(file_name, encoding='utf-8') as f:
# ✅ calling read() on file object
read_data = f.read()
print(read_data)