函数内创建的hero_stats.json文件无法打开,请求技术排查
问题原因分析及解决方案
核心问题1:文件路径定位模糊
代码使用相对路径写入文件时,文件会被保存到Python脚本的当前工作目录(不一定是脚本所在的文件夹),这会导致你在预期位置找不到文件,误以为“无法打开”。
核心问题2:重复写入覆盖+缺少可视化所需的文件读取逻辑
你的代码存在两次写入同一文件的操作:
- 先通过
pd.DataFrame(data).to_json("hero_stats.json")写入pandas格式的JSON - 紧接着用
json.dump(data, outfile)覆盖了之前的内容
同时,你的需求是“打开文件进行可视化”,但当前代码只完成了写入文件的操作,没有任何读取文件、触发可视化的逻辑,这也是你觉得流程缺失的原因。
修正后的代码示例
import pandas as pd, requests, json import os def get_hero_stats(): # 获取英雄数据 data = requests.get("https://api.opendota.com/api/heroStats").json() # 明确文件保存路径(固定到脚本所在文件夹) script_folder = os.path.dirname(os.path.abspath(__file__)) target_file = os.path.join(script_folder, "hero_stats.json") # 仅保留一种写入方式(pandas格式更适合后续可视化) pd.DataFrame(data).to_json(target_file, indent=4) # 读取文件并做可视化准备(示例:打印数据预览) hero_df = pd.read_json(target_file) print("英雄数据预览:") print(hero_df[["localized_name", "primary_attr", "attack_type"]].head()) # 直接打开文件所在目录(Windows系统适用) os.startfile(script_folder) get_hero_stats()
关键调整说明
- 用
os.path模块固定文件路径,确保文件保存在脚本所在文件夹,方便你快速找到 - 移除重复写入操作,避免不必要的文件覆盖
- 添加了文件读取和可视化预览逻辑,同时自动打开文件所在目录,解决“找不到文件”的问题
内容的提问来源于stack exchange,提问作者user18377332
相关产品推荐
相关产品推荐

