尝试提取在python中传递的命令行参数
cmdargs = str(sys.argv)
print cmdargs
打印
['E:/omation.py', '{"command":"sel_media","value":"5X7_phot
o_paper.png"},{"command":"tray","value":"4X6_photo_paper.png"}']
从中我如何提取command
和values
。
我不知道如何循环这个数组并获得commnd和value values.plese help
注意:我还想丢弃第一个值'E:/omation.py'
答案 0 :(得分:1)
您可以使用Python utils来解析json字符串:
import json
examples = json.loads('['+cmdargs[1]+']')
第一个导入为python加载json实用程序。然后,您可以使用json.loads
将json字符串解析为Python字典。在示例中,我将您的一个json字符串解析为python字典。请务必添加' ['和']'将您的字符串转换为有效的json数组。然后,您可以获得命令和值,如:
print(examples[0]['command'])
print(examples[0]['value' ])
答案 1 :(得分:1)
您的输入无效JSON。您必须找到一种方法将参数作为单独的有效JSON对象传递。然后你可以这样做:
# j.py
import json
import sys
print(sys.argv)
for arg in sys.argv[1:]:
j = json.loads(arg)
print(j.get("command"))
print(j.get("value"))
用法可能是:
$ python3 j.py '{"command":"sel_media","value":"5X7_photo_paper.png"}' '{"command":"tray","value":"4X6_photo_paper.png"}'
['j.py', '{"command":"sel_media","value":"5X7_photo_paper.png"}', '{"command":"tray","value":"4X6_photo_paper.png"}']
sel_media
5X7_photo_paper.png
tray
4X6_photo_paper.png
答案 2 :(得分:1)
您给出的示例在列表cmdargs的第二个元素中显示了两个json对象。捕获该案例的最简单方法可能是将第二个参数括在方括号中,这将使其成为合法的JSON,然后遍历结果列表:
import json
a = json.loads('['+cmdargs[1]+']')
for p in a:
print "command is ", p['command']
print "value is ", p['value']
这是针对您展示的示例所特有的,您可能需要使其更加健壮。