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

通过argparse传入JSON文件名后json.load加载报错如何解决

修复方案

错误原因

  • json.load() 要求传入具备read()方法的文件流对象,你直接传入了命令行拿到的文件名字符串,因此触发属性不存在报错
  • 你的代码存在2处隐藏问题:未调用parser.parse_args()解析命令行参数就直接使用args变量、未导入json模块就调用json.load方法

正确实现代码

import argparse
import json  # 导入json依赖模块

parser = argparse.ArgumentParser()
parser.add_argument('-i', action='store', required=True, help='输入JSON文件的路径')
args = parser.parse_args()  # 解析命令行参数得到args对象
filename = args.i

# 先打开文件得到文件对象,再传入json.load
with open(filename, 'r', encoding='utf-8') as f:
    json_data = json.load(f)

# 后续可以正常使用json_data
print(json_data)

补充说明

  • 使用with open语法可以自动管理文件句柄的打开和关闭,无需手动调用f.close(),避免资源泄露
  • 给add_argument加上required=True参数可以避免用户漏传-i参数的异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:06