You need to enable JavaScript to run this app. 调用GitHub用户搜索API操作JSON出现TypeError报错求助
优惠活动
大模型
产品
解决方案
定价
更多

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 17:06:11