python 之 sys.argv 外部传参动态匹配内部字典
- 问题
在处理传参的过程中,我每次都是使用固定的字典格式取值,却从来没想过用字符串的方式来获取value,以下是解决办法
eval() 函数用来执行一个字符串表达式,并返回表达式的值。 - 实例方法
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import sys
g1 = {"g1": {
"f1": ["a", "b", "c"],
"f2": ["a1", "b1", "c1"],
}}
g2 = {"g2": {
"f1": ["a8", "b9", "c10"],
"f2": ["a11", "b12", "c13"],
}}
if __name__ == '__main__':
a = sys.argv[1]
b = "%s['%s']" % (a, a)
print(a)
print("a", eval(a))
# eval 字符串转成字典,直接可以获取上面字典里面的数据,完美解决了外部传参进来动态获取字典数据
# 使用异常捕获问题,输入一错误的参数就直接退出,并且打印默认参数
#
效果:
C:\Users\OP\Desktop\python test.py g1
g1
a {'g1': {'f1': ['a', 'b', 'c'], 'f2': ['a1', 'b1', 'c1']}}
C:\Users\OP\Desktop\英迪瑞讯\IVI_WEB\CMDB\tmp>python test.py g2
g2
a {'g2': {'f1': ['a8', 'b9', 'c10'], 'f2': ['a11', 'b12', 'c13']}}
C:\Users\OP\Desktop\tmp>
- 经验来之不易,请大家看完觉得有帮助,请给点推荐