You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未做修改的Python桌面应用突发'List Index Out of Range'问题

排查步骤:JSON读取异常引发的'List Index Out of Range'错误
  • 验证JSON文件完整性与结构
    即使文件未手动修改,也可能因磁盘故障、意外权限变更等导致损坏。用以下脚本检查文件是否可正常解析,以及Location键是否存在:

    import json
    
    def validate_json(file_path):
        try:
            with open(file_path, 'r', encoding='utf-8') as f:
                data = json.load(f)
            
            # 根据你的JSON结构(数组/对象)检查Location键
            if isinstance(data, list):
                for idx, entry in enumerate(data):
                    if 'Location' not in entry:
                        print(f"数组条目 {idx} 缺失'Location'键")
                    elif not entry['Location']:
                        print(f"数组条目 {idx} 的'Location'值为空")
            elif isinstance(data, dict):
                if 'Location' not in data:
                    print("JSON根节点缺失'Location'键")
                elif not data['Location']:
                    print("JSON根节点的'Location'值为空")
            print(f"{file_path} 结构检查完成")
            return data
        except json.JSONDecodeError as e:
            print(f"{file_path} 解析失败: {str(e)}")
        except PermissionError:
            print(f"无权限读取 {file_path}")
        except Exception as e:
            print(f"读取 {file_path} 出错: {str(e)}")
    
    # 替换为你的两个JSON文件路径
    validate_json("first_file.json")
    validate_json("second_file.json")
    
  • 检查代码中Location的访问逻辑
    List Index Out of Range通常是数组索引超出长度导致。确保访问Location前先校验数组长度与元素有效性:

    # 示例:假设你从JSON中读取了一个数组
    json_data = validate_json("your_file.json")
    if isinstance(json_data, list) and len(json_data) > 0:
        for entry in json_data:
            # 先确认entry是字典且包含Location键
            if isinstance(entry, dict) and 'Location' in entry and entry['Location']:
                # 执行Google Maps API计算等逻辑
                pass
            else:
                print(f"无效条目,跳过: {entry}")
    else:
        print("JSON数据为空或不是数组结构")
    
  • 确认文件读取路径与权限
    系统更新或用户权限变更可能导致应用无法读取目标文件,添加路径校验:

    import os
    
    file_path = "your_file.json"
    abs_path = os.path.abspath(file_path)
    print(f"目标文件绝对路径: {abs_path}")
    print(f"文件是否存在: {os.path.exists(abs_path)}")
    print(f"文件是否可读: {os.access(abs_path, os.R_OK)}")
    
  • 排除API交互的间接影响
    若代码中存在本地JSON与Google Maps/Calendar API返回数据的混合处理,需确认API返回结构未变更,避免因API数据异常导致数组索引越界。

内容的提问来源于stack exchange,提问作者PytonN00b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:02:19