通过解析器传递json文件作为命令行参数,这可能吗?

时间:2016-06-13 11:50:56

标签: python json

我需要通过命令行参数解析器将json文件参数覆盖到python字典。因为,json文件位于当前工作目录中,但它的名称可以是动态的,所以我想要如下所示: -

  

python python_script --infile json_file

python_script:

if __name__ == "__main__":
   profileInfo = dict()
   profileInfo['profile'] = "enterprisemixed"
   profileInfo['nodesPerLan'] = 50

json_file:

{
   "profile":"adhoc",               
   "nodesPerLan" : 4
}

我尝试添加以下行,但不知道如何将此json数据加载到python词典: -

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--infile', nargs = 1, help="JSON file to be processed",type=argparse.FileType('r'))
arguments = parser.parse_args()

1 个答案:

答案 0 :(得分:1)

使用--infile的名称阅读JSON文件并更新profileInfo

import json
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--infile', nargs=1,
                    help="JSON file to be processed",
                    type=argparse.FileType('r'))
arguments = parser.parse_args()

# Loading a JSON object returns a dict.
d = json.load(arguments.infile[0])

profileInfo = {}
profileInfo['profile'] = "enterprisemixed"
profileInfo['nodesPerLan'] = 50

print(profileInfo)
# Overwrite the profileInfo dict
profileInfo.update(d)
print(profileInfo)