[小白Python学习错题集]AttributeError: ‘str‘ object has no attribute ‘read‘——json.load()与json.loads()的区别

运行如下代码

from pathlib import Path
import json

path = Path('numbers.json')
contents = path.read_text()

numbers = json.load(contents)
print(numbers)

但却出现错误提示

[小白Python学习错题集]AttributeError: ‘str‘ object has no attribute ‘read‘——json.load()与json.loads()的区别_第1张图片

最终发现:竟然是json.load()和json.loads()傻傻分不清楚。

修改后正常运行的代码:

from pathlib import Path
import json

path = Path('numbers.json')
contents = path.read_text()

numbers = json.loads(contents)
print(numbers)

[小白Python学习错题集]AttributeError: ‘str‘ object has no attribute ‘read‘——json.load()与json.loads()的区别_第2张图片

知乎上有篇帖子写的很好

Python中json.load()和json.loads()的区别 - 知乎 (zhihu.com)

json.load()针对文件,将json格式的字符转换成字典,是从文件中读取;

json.loads()针对内存对象,将一个JSON格式的字符串转换为字典,上例中

contents已经是从文件中读取的 json 格式数据了,所以此处用 json.loads().

你可能感兴趣的:(python初学错题集,python,学习,json)