python - 从 argparse 参数打开 json 文件
问题描述
我有一个程序接受用户的文件名作为参数,如:
$ myprog -i filename
文件名是一个包含 JSON 数据的文件。
当我尝试将文件加载到 JSON 对象中时,例如:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', action='store')
filename = args.i
json_data = json.load(filename)
我收到来自 Python 的错误消息:
line 316, in main
json_data = json.load(input_file)
File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/__init__.py", line 293, in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
我需要“告诉”Python 传递的参数是 json.load 应该使用的实际文件,我不知道该怎么做?
解决方案
您需要一个实际的文件对象
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-i', action='store')
filename = args.i
with open(filename) as f:
json_data = json.load(f)
请记住,如果您不提供绝对路径,则该文件需要与脚本位于同一目录中
推荐阅读
- android - 替换整个数据集时的 RecyclerView 动画
- c# - 使用 Entity Framework Core 的 LEFT JOIN 查询
- makefile - make 模式自动生成依赖
- c++ - word2vec中CBOW和Skipgram梯度的区别?
- regex - 我应该如何使用正则表达式来搜索和替换 url 中的特殊字符?
- mysql - MySQL information_schema 更改 COLLATIONS IS_DEFAULT
- python - matplotlib 底图鼠标事件
- c# - 带有继承的 Web API 版本控制
- javascript - !args.value 的正确性 || args.value.length?
- c++ - 计算距一组其他点的最远点