调用GitHub用户搜索API操作JSON出现TypeError报错求助
问题排查与解决
报错原因
TypeError: expected str, bytes or os.PathLike object, not dict错误由以下代码触发:
with open(data,'w') as endfile:
open()函数第一个参数要求传入文件路径字符串,你传入的data是requests.get(url).json()解析得到的字典对象,类型不匹配导致报错。
其他逻辑问题
你的代码还存在多处和需求不符的逻辑错误:
- 没有实现「用本地JSON内容重写API返回数据」的逻辑,仅读取了本地JSON文件就试图写入不存在的路径
write()方法不能直接写入字典对象,需要先将字典序列化为JSON格式字符串- 你调用的GitHub用户搜索接口是只读GET接口,无法直接修改该公开接口的返回内容。常规实现方案是将修改后的API数据保存到本地,若需要上传数据到其他服务,需额外调用对应的POST/PUT接口。
修正后代码
以下代码实现「拉取API原始数据→用本地自定义内容覆盖→保存修改后的结果到本地」的逻辑:
import requests import json # 1. 请求API获取原始数据 # 注意:URL中的{query}是占位符,需替换为实际搜索关键词才能返回正常数据 url = "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}" api_data = requests.get(url).json() print("原始API返回数据:", api_data) # 2. 读取本地自定义JSON数据 local_file_path = "C:/Users/vladi/Desktop/json files Vlad/file structure first attemp.json" with open(local_file_path, "r", encoding="utf-8") as f: custom_data = json.load(f) # 3. 用本地自定义内容重写API返回数据 # 全量覆盖写法 updated_data = custom_data # 若只需覆盖部分字段,可使用字典更新方法:api_data.update(custom_data),再将updated_data赋值为api_data # 4. 保存修改后的数据到本地 output_file_path = "C:/Users/vladi/Desktop/updated_github_data.json" with open(output_file_path, "w", encoding="utf-8") as f: json.dump(updated_data, f, ensure_ascii=False, indent=2) print(f"修改后的数据已保存至:{output_file_path}")
内容的提问来源于stack exchange,提问作者Vladimir Pavlenko
相关产品推荐
相关产品推荐

