How to Create and Use Configuration files in a Python Project
A configuration file is a file that contains data about a program or specific user settings that is needed to run the application. Every program needs some kind of configuration. These configuration data could be written straight into the source code for extremely simple jobs. However, this is a bad idea because you may need to upload your project code to Github. As a result, it's better to build and use individual configuration files rather than pushing them to Github or other such repositories.
There are many types of configuration files. In this tutorial, we will show you how to create and use configuration files in Python.
Creating .ini config files
The .ini file is a configuration file with .ini extension. Python provides a built-in module called configparser to read .ini files.
Create a config.ini file inside your project directory and add configuration details to it in the following format:
[DATABASE] host = localhost port = 3306 username = root password = Test123$ database_name = "test" pool_size = 10 [S3] bucket = test key = HHGFD34S4GDKL452RA secret = YKH1jsPQks35/hs3HS34jslkYo4wSYu region = us-west-1
To retrieve configuration details from the config.ini file in your Python code, do the following:
from configparser import ConfigParser
import os.path
dir_path = os.path.dirname(os.path.realpath(__file__))
config_filepath = dir_path+"/config.ini"
# check if the config file exists
exists = os.path.exists(config_filepath)
config = None
if exists:
print("--------config.ini file found at ", config_filepath)
config = ConfigParser()
config.read(config_filepath)
else:
print("---------config.ini file not found at ", config_filepath)
# Retrieve config details
database_config = config["DATABASE"]
s3_config = config["S3"]
# Never print config data in console when working on real projects
print(database_config["host"])
print(database_config["port"])
print(database_config["username"])
print(database_config["password"])
print(database_config["database_name"])
print(database_config["pool_size"])
print(s3_config["bucket"])
print(s3_config["key"])
print(s3_config["secret"])
print(s3_config["region"])
The output of the above code is as follows:
--------config.ini file found at E:\python-workspace\example/config.ini localhost 3306 root Test123$ test 10 test HHGFD34S4GDKL452RA YKH1jsPQks35/hs3HS34jslkYo4wSYu us-west-1