Python脚本使用参数打开json文件

时间:2018-12-19 12:41:16

标签: python

我是python新手。我正在使用python脚本,在该脚本中加载json文件以为脚本设置某些值,但是我的想法是使用参数(我认为是正确的用法)更动态地导入该文件,所以我不必总是包含python脚本中json文件的名称,以下是示例代码:

import json
from pprint import pprint

with open("VariableSettings.json") as json_data:
    data = json.load(json_data)

所以我的想法是使用args更改代码:“ with open(” VariableSettings.json“)as json_data”以动态打开json文件。

我认为在命令提示符下,我可以使用命令py test.py arg1(这表示文件路径)。

所以我知道我的解释可能有点混乱,但是如果有人可以帮助我,我会感激不尽。

3 个答案:

答案 0 :(得分:2)

您可以使用sys来做到这一点。在下面的示例中,我创建了一个包含内容的文件test.json

{"foo": "bar"}

并将您的代码修改为

import json
import sys

with open(sys.argv[1]) as json_data:
    data = json.load(json_data)
    print(data)

您需要调用execute as

python test.py test.json

输出将是

{'foo': 'bar'}

更多详细信息可以在其他this帖子中找到

答案 1 :(得分:1)

使用sys模块

例如:

import sys
import json
from pprint import pprint

if len(sys.argv) < 2:
    print("Input File Missing")
    sys.exit()

with open(sys.argv[1]) as json_data:
    data = json.load(json_data)
print(data)

要运行使用

python yourScriptName.py full_path_to.json

答案 2 :(得分:0)

您也可以使用argparse

import json
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-f", "--filename", required=True, type=str)
args = parser.parse_args()

with open(args.filename) as json_data:
    data = json.load(json_data)
    print(data)

可以使用别名来调用:

python test.py -f test.json

或完整的参数名称:

python test.py --filename test.json

如果您不提供文件,则会得到:

usage: test.py [-h] -f FILENAME
test.py: error: the following arguments are required: -f/--filename

自从我通过required=True以来。如果希望参数为可选,则可以删除此选项。

此外,您还可以扩展程序以通过用try / except捕获json.JSONDecodeError来检查JSON文件格式是否正确:

with open(args.filename) as json_data:
    try:        
        data = json.load(json_data)
        print(data)
    except json.JSONDecodeError:
        print('Invalid JSON format')