我是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(这表示文件路径)。
所以我知道我的解释可能有点混乱,但是如果有人可以帮助我,我会感激不尽。
答案 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')