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:
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
Now, 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 above code will generate a product.json file with the following pretty formatted data:
localhost
3306
root
Test123$
test
10
test
HHGFD34S4GDKL452RA
YKH1jsPQks35/hs3HS34jslkYo4wSYu
us-west-1