动态访问.ini文件中声明的字典

时间:2013-01-30 21:16:59

标签: python ini

这是含有更多类似词典的.ini文件的内容

[section]
cmd_list = {'gamess': "416.gamess/exe/gamess",
            'sjeng': '458.sjeng/exe/sjeng',
            'soplex': '450.soplex/exe/soplex',
            'astar': '473.astar/exe/astar',
           }             
...

现在在我的主文件中,想要动态访问字典:

for r in 'string'
     cmd_list[r][1] #from .ini
     cmd_list[r][0] #from .ini
    ....

怎么做?

1 个答案:

答案 0 :(得分:1)

如果使用ConfigParser library解析.ini文件,cmd_list的值仍然是包含Python dict文字的字符串;它还不是字典。

使用ast.literal_eval() function将其加载到实际字典中:

>>> ast.literal_eval('''\
... {'gamess': "416.gamess/exe/gamess",
...             'sjeng': '458.sjeng/exe/sjeng',
...             'soplex': '450.soplex/exe/soplex',
...             'astar': '473.astar/exe/astar',
...            }''')
{'astar': '473.astar/exe/astar', 'sjeng': '458.sjeng/exe/sjeng', 'gamess': '416.gamess/exe/gamess', 'soplex': '450.soplex/exe/soplex'}
>>> cmd_list = _
>>> cmd_list['sjeng']
'458.sjeng/exe/sjeng'

如果您控制输出格式,您可能想要重新考虑策略;有更好的格式来存储相同的信息。