Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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脚本中访问它们_Python_Dictionary_Unix_Command Line Arguments_Sys - Fatal编程技术网

通过命令行传递字典参数并在python脚本中访问它们

通过命令行传递字典参数并在python脚本中访问它们,python,dictionary,unix,command-line-arguments,sys,Python,Dictionary,Unix,Command Line Arguments,Sys,我试图将包含参数的字典传递给python脚本,然后在脚本中使用该字典。我将字典保存在环境变量气流中 例如,脚本应在命令行上运行,如下所示:, python test.py dict_名称 dict_的名字看起来像这样 { "path": "firstlevel/secondlevel", "name": "xyz", "key": "12345" } f = class_name(sys.argv[1:]) 而且,我需要使用上述字典的键来代替python脚本(即test.py)中的实际值 我

我试图将包含参数的字典传递给python脚本,然后在脚本中使用该字典。我将字典保存在环境变量气流中

例如,脚本应在命令行上运行,如下所示:, python test.py dict_名称

dict_的名字看起来像这样

{ "path": "firstlevel/secondlevel", "name": "xyz", "key": "12345" }
f = class_name(sys.argv[1:])
而且,我需要使用上述字典的键来代替python脚本(即test.py)中的实际值

我尝试在类的init函数中使用data=sys.argv[1]。但是,它给了我一个列表而不是字典。这样,使用字典的功能是不可能的

def __init__(self, data = sys.argv[1]):
    print data
我正在像这样实例化对象

{ "path": "firstlevel/secondlevel", "name": "xyz", "key": "12345" }
f = class_name(sys.argv[1:])
我得到的结果是

['path', ':', 'firstlevel/secondlevel', 'name', ':', 'xyz', 'key', ':', '12345']
我的目标是将数据作为字典而不是python脚本中的列表获取,因为我只想用键替换python脚本中的值

下面是一个用例,可以更清楚地解释我的观点

fun(name = 'xyz', key = 12345)

回溯

回溯(最后一次调用):文件“test.py”,第13行,在objec_name=class_name(sys.argv[1:])文件“test.py”的第6行,在init data=json.loads(sys.argv[1])文件“C:\Users\Sarvesh Pandey\AppData\Local\Programs\Python\Python38\lib\json_init_u.py”的第357行,在load return\u default\u decoder.decode文件中“C:\Users\Sarvesh Pandey\AppData\Local\Programs\Python\Python38\lib\json\decoder.py”,第337行,在decode obj中,end=self.raw\u decode(s,idx=\u w(s,0.end())


JSON或JavaScript对象表示是获取Python对象并将其转换为类似字符串的表示的一种方式,适合传递给多种语言

python saver.py '{"names": ["J.J.", "April"], "years": [25, 29]}'
在python脚本中,执行以下操作:

import json
data=json.loads(argv[1])
这将返回一个表示要传入的数据的字典

然后,您可以按预期应用于该函数

fun(data['name'], data['key'])
编辑: 您还需要考虑解析问题

例如

如果运行
print sys.argv[1]
,可能会得到json模块无法解码为json对象的
'{favorited:

尝试转义内部引号,使其作为1个参数传递,如下所示:

"{"\""favorited"\"": false, "\""contributors"\"": null}"

您不能传入python字典。但是,您可以传入一个JSON字符串并将其转换为字典,签出我在这个线程下尝试的答案。下面是我得到的错误,data=JSON.load(data)File“C:\Python27\lib\JSON_init_uuu2;.py”,第287行,在load return loads(fp.read(),AttributeError:'list'对象没有属性'read'您到底想完成什么?在命令行上调用脚本的用例是什么?我觉得这是一个,可能您想使用类似于
argparse
pickle
的命令,这取决于您尝试执行的操作。我在中使用了类似的命令命令行。对于json,我的命令是,您似乎没有传入正确类型的可解析字符串。请查看并更改您传入的字符串。尝试此操作(从cmd行传入时添加单引号)
“{”cust_raw_path:“abc/xyx”,“cust_feat_path:“pqr/mno”,“account_name:“abc”,“account_key:“BAFCS”}“
。它是一个有效的json。您可以使用此处检查它是否有效。它肯定会解决:)最后,它成功了。现在我可以以字典形式访问数据。{u'cust\u feat\u path':u'CustomerChurnRiskManagement/FeaturedData',u'account\u name':u'enterprisedata}.这就是我得到的。我会看到的字符u是关联的。剩下的我会完成的。你今天真的救了我。谢谢