Python如何读取本地JSON文件为字典并解决json.loads调用报错问题
问题原因
你遇到的报错是因为混淆了json.load()和json.loads()两个方法的用法:
json.loads()接收JSON格式的字符串、字节或字节数组作为参数,适合处理硬编码的JSON内容json.load()接收文件对象作为参数,专门用于直接从打开的本地JSON文件加载内容
正确实现方法
方法1:推荐直接使用json.load()读取文件
这是处理本地JSON文件的标准写法,无需手动读取文件内容:
import json def myfunction(dictionary): # 你的处理逻辑 return new_dictionary # 读取本地JSON文件,路径前加r代表原生字符串,无需写双反斜杠转义 with open(r'C:\Users\SONY\Desktop\test.json', 'r', encoding="utf-8") as f: info = json.load(f) # 调用处理函数,注意替换为你实际的函数名(你原有代码存在笔误,定义的是myfunction,调用写的是key_replacer) refined = myfunction(info) # 处理完成后写回本地文件(可选) with open(r'C:\Users\SONY\Desktop\processed_test.json', 'w', encoding="utf-8") as f: # ensure_ascii=False 避免中文乱码,indent=4 输出格式化的JSON结构方便阅读 json.dump(refined, f, ensure_ascii=False, indent=4)
方法2:手动读取文件内容后用json.loads()处理
如果你需要先拿到JSON字符串再做其他处理,可以用这种写法:
with open(r'C:\Users\SONY\Desktop\test.json', 'r', encoding="utf-8") as f: # 先读取整个文件内容为字符串 data_str = f.read() info = json.loads(data_str) # 后续处理逻辑和方法1一致 refined = myfunction(info) # 写入时也可以先转字符串再写入 new_data = json.dumps(refined, ensure_ascii=False, indent=4) with open(r'C:\Users\SONY\Desktop\processed_test.json', 'w', encoding="utf-8") as f: f.write(new_data)
内容的提问来源于stack exchange,提问作者n.mathfreak
相关产品推荐
相关产品推荐

