我正在尝试将由参数组成的字典传递给python脚本,然后在脚本中使用该字典。我将字典保存在气流的环境变量中。
例如,脚本应在命令行上运行,python test.py dict_name
dict_name看起来像这样,
{ "path": "firstlevel/secondlevel", "name": "xyz", "key": "12345" }
而且,我需要使用上述字典的键来代替python脚本中的实际值,即test.py
我尝试在类的init函数中使用data = sys.argv [1]。但是,它给了我一个列表,而不是字典。这样一来,就不可能使用字典的功能。
def __init__(self, data = sys.argv[1]):
print data
我正在这样实例化对象,
f = class_name(sys.argv[1:])
我得到的输出是,
['path', ':', 'firstlevel/secondlevel', 'name', ':', 'xyz', 'key', ':', '12345']
我的目标是将数据作为字典而不是python脚本中的列表来获取,因为我只想用键替换python脚本上的值。
这里是用例,可以更清楚地说明我的观点。
fun(name = 'xyz', key = 12345)
收件人
fun(sys.argv['name'], sys.argv['key'])
Traceback
Traceback(最近一次通话最近):文件“ test.py”,第13行,在objec_name = class_name(sys.argv [1:])文件“ test.py”,第6行,在初始化数据= json.loads (sys.argv [1])文件“ C:\ Users \ Sarvesh Pandey \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ json_init_.py”,第357行,在加载中返回_default_decoder.decode文件“ C :\ Users \ Sarvesh Pandey \ AppData \ Local \ Programs \ Python \ Python38 \ lib \ json \ decoder.py“,第337行,在解码obj,结束= self.raw_decode(s,idx = _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]
,您可能会得到'{favorited:
,json模块无法将其解码为json对象。
尝试转义您的内部引号,以便将其作为1个参数传递,如下所示:
"{"\""favorited"\"": false, "\""contributors"\"": null}"