Getting a list from a config file with ConfigParser

前端 未结 2 1378
日久生厌
日久生厌 2020-12-16 16:11

I have something like this in my config file (a config option that contains a list of strings):

[filters]
filtersToCheck = [\'foo\', \'192.168.1.2\', \'barba         


        
相关标签:
2条回答
  • 2020-12-16 17:01
    ss = """a_string = 'something'
    filtersToCheck = ['foo', '192.168.1.2', 'barbaz']
       a_tuple =      (145,'kolo',45)"""
    
    import re
    regx = re.compile('^ *([^= ]+) *= *(.+)',re.MULTILINE)
    
    
    for mat in regx.finditer(ss):
        x = eval(mat.group(2))
        print 'name :',mat.group(1)
        print 'value:',x
        print 'type :',type(x)
        print
    

    result

    name : a_string
    value: something
    type : <type 'str'>
    
    name : filtersToCheck
    value: ['foo', '192.168.1.2', 'barbaz']
    type : <type 'list'>
    
    name : a_tuple
    value: (145, 'kolo', 45)
    type : <type 'tuple'>
    

    Then

    li = [ (mat.group(1),eval(mat.group(2))) for mat in regx.finditer(ss)]
    print li
    

    result

    [('a_string', 'something'), ('filtersToCheck', ['foo', '192.168.1.2', 'barbaz']), ('a_tuple', (145, 'kolo', 45))]
    
    0 讨论(0)
  • 2020-12-16 17:09

    You cannot use the python object like a list in the value for the config file. But you can ofcourse have them as comma separated values and once you get it do a split

    [filters]
    filtersToCheck = foo,192.168.1.2,barbaz
    

    and do

    filtersToCheck = value.split(',')
    

    The other approach is ofcourse, subclassing SafeConfigParser class and removing the [ and ] and constructing the list. You termed this as ugly, but this is a viable solution.

    The third way is to use Python module as a config file. Projects do this. Just have the filtersToCheck as a variable available from your config.py module and use the list object. That is a clean solution. Some people are concerned about using python file as config file (terming it as security hazard, which is somewhat an unfounded fear), but there also this group who believe that users should edit config files a not python files which serve as config file.

    0 讨论(0)
提交回复
热议问题