Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting a list from a config file with ConfigParser

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', 'barbaz']

Is there a more elegant (built-in) way to get a list from filtersToCheck instead of removing the brackets, single-quotes, spaces and then using split() to do that? Maybe a different module?

(Using python3.)

like image 436
tkit Avatar asked Jul 20 '11 08:07

tkit


People also ask

Which of the following code returns the list of all sections available in config file?

The configparser module has ConfigParser class. It is responsible for parsing a list of configuration files, and managing the parsed database. Return all the configuration section names.

What is ConfigParser ConfigParser ()?

ConfigParser is a Python class which implements a basic configuration language for Python programs. It provides a structure similar to Microsoft Windows INI files. ConfigParser allows to write Python programs which can be customized by end users easily.


1 Answers

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.

like image 94
Senthil Kumaran Avatar answered Sep 20 '22 12:09

Senthil Kumaran