通过命令行传递字典参数并在python脚本中访问它们
我试图将包含参数的字典传递给python脚本,然后在脚本中使用该字典。我将字典保存在环境变量气流中 例如,脚本应在命令行上运行,如下所示:, python test.py dict_名称 dict_的名字看起来像这样通过命令行传递字典参数并在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)中的实际值 我
{ "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是关联的。剩下的我会完成的。你今天真的救了我。谢谢