访问python json密钥时需要传递参数

时间:2015-07-14 06:34:03

标签: python json bash parameters arguments

我需要使用命令行参数

访问json文件

我的代码是python.py:

#########################################
import json
import sys
from sys import argv
from pprint import pprint

with open('cdh/cdh5.json') as data_file:
    data = json.load(data_file)

pprint(data['projects']['abcd']['track-branch'])

#################################################

所以,而不是项目abcd,我需要在执行这个python脚本时从命令行传递abcd。

eg1:python.py abcd

将执行:pprint(data['projects']['abcd']['track-branch'])

eg2:python.py efgh

将执行:pprint(data['projects']['efgh']['track-branch'])

我试过这样做: -

pprint(data['projects']['sys.args']['track-branch'])但它给出了以下错误:

pprint(data['projects']['sys.argv']['track-branch'])
KeyError: 'sys.argv'

2 个答案:

答案 0 :(得分:2)

要访问从命令行传入的参数,您需要使用sys.argv,这是正确的。

但是你应该按原样使用它,而不是将它作为字符串传递,就像你正在做的那样。

此外,sys.argv是来自命令行的所有参数的列表,sys.argv的第一个元素是已执行的文件(如python.py)。所以你需要使用第二个元素。示例 -

pprint(data['projects'][sys.argv[1]]['track-branch'])

答案 1 :(得分:1)

你在正确的轨道上,但sys.argv是一个数组,主模块位于第0个索引,每个连续的命令行参数位于索引1,2等。您应该将代码更改为:

pprint(data['projects'][sys.argv[1]]['track-branch'])