Python脚本无法将接口返回字典写入文件,无报错但数据未保存求助
故障排查与解决步骤
- 优先排查GET请求参数错误问题:当前你给GET请求传递了
data参数,GET请求的请求体通常不会被后端接口识别,身份校验失败会返回空响应。你需要将GET请求的data=user_passwd改为params=user_passwd,同时先打印请求状态码和返回内容确认接口有有效返回,修正后的参考代码如下:
import os import json import requests # 关闭ssl告警(可选) requests.packages.urllib3.disable_warnings() s=requests.Session() # 先确认登录请求成功 login_resp = s.post("https://tp-dc-ixm0.net/api/login", verify=False, data=user_passwd) print("登录请求状态码:", login_resp.status_code) # 调整GET请求参数传递方式,避免URL拼接和参数冲突 get_params = { "status": "all", "topology": "NodeToNode", "limit": 100 } # 合并身份校验参数 get_params.update(user_passwd) get_resp = s.get("https://tp-dc-ixm0.net/api/tests", verify=False, params=get_params) print("数据请求状态码:", get_resp.status_code) print("接口返回原始内容:", get_resp.text) response1 = json.loads(get_resp.text) print("解析后数据类型:", type(response1)) print("解析后数据内容:", response1) # 确认文件写入路径,避免相对路径定位错误 print("当前脚本工作目录:", os.getcwd()) # 指定编码避免中文乱码,添加格式化参数方便阅读 with open('data.txt', 'w', encoding='utf-8') as output: json.dump(response1, output, ensure_ascii=False, indent=2, default=str)
- 排查路径错误:如果打印的工作目录和你预期的存放文件的目录不一致,直接写绝对路径即可,比如Windows下
open(r'C:\Users\你的用户名\Desktop\data.txt', 'w', encoding='utf-8'),Linux/macOS下open('/home/你的用户名/data.txt', 'w', encoding='utf-8')。 - 排查权限问题:如果脚本运行身份对目标目录没有写入权限,会静默写入失败,可切换到用户目录、桌面等路径做测试。
内容的提问来源于stack exchange,提问作者Patryk Petryszen
相关产品推荐
相关产品推荐

