Friday, March 20, 2020

Setup An Application Configuration File In Python

it's a common practice to store configuration variables in a configuration file and retrieve the properties while they are needed.

Python provides a module called ConfigParser to help managed application configurations. The configParser module can be used to create a configuration file as well as to retrieve property values from a configuration file.

A configuration file in Python is similar to a Windows version of init (.ini) file. The file is divided by “Sections” and “options”. Following is a sample configuration file:

[DEFAULT]
work_directory =/tmp
Log_directory = /var/logs
app_user = app

[DEVELOPMENT]
hostname = mydevhost.com
database = devdb
user_id =devuser
Password =

[STAGE]
hostname = mystagehost.com
database = stagedb
user_id =stageuser
Password =

In the above example, [DEFAULT], [DEVELOPMENT], and [STAGE] are called section. Work_directory, log_directory, hostname,etc are called option.

Here is an example of how to retrieve the properties from the configuration file assuming the above configuration filename is called config.cfg:

import configparser
class GetConfigProperty():

def get_property(self,config_file: str, section: str, property: str) -> str:
     property_value: str
     config = configparser.ConfigParser()
     config.read_file(open('./config/' + config_file))
     property_value = config.get( section, property,fallback=None)
     return property_value

Now, we can call the above function to get the configuration properties in the application like the following:

getConfigProperty = GetConfigProperty()
working_dir : str = getConfigProperty.get_property("config.cfg", "DEFAULT", "working_dir");
dev_hostname : str = getConfigProperty.get_property("file_config.cfg", "DEVELOPMENT", "hostname");

Related Post: Setup Logging In Python

No comments: