Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问python json键时需要传递参数_Python_Json_Bash_Parameters_Arguments - Fatal编程技术网

访问python json键时需要传递参数

访问python json键时需要传递参数,python,json,bash,parameters,arguments,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']['abc

我需要使用命令行参数访问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'])

#################################################
因此,在执行此python脚本时,我需要从命令行传递abcd,而不是项目abcd

eg1:
python.py abcd

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

eg2:
python.py efgh

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

我试过这样做:-

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

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

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

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

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

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

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