Categories

Using a Config File with a Python Script

A configuration file (or config file) is a file used to configure the initial settings for some computer programs. In Python, using a configuration file can significantly simplify the management of settings and parameters for your scripts, especially in a complex software system.

Different file formats can be used for config files in Python, such as .ini, .json, .yaml and .cfg. In this article, we’ll explore how to use each of these formats and some modules in Python that facilitate the reading and writing of config files.

ConfigParser Module

ConfigParser is a built-in Python module for reading .ini-style configuration files. It provides a way of reading and writing data from and to .ini files, which are a standard for config files in Windows.

Example of Config File in .ini Format

[DEFAULT]
server = localhost

[web_server]
host = 127.0.0.1
port = 80

[db_server]
host = 127.0.0.1
port = 3306

How to Read the Config File

import configparser

config = configparser.ConfigParser()
config.read('config.ini')

print(config['DEFAULT']['server'])  # localhost
print(config['web_server']['host'])  # 127.0.0.1
print(config['db_server']['port'])  # 3306

JSON

JSON files are another common format for config files, and Python’s json module makes it easy to read and write these files.

Example of Config File in .json Format

{
  "server": "localhost",
  "web_server": {
    "host": "127.0.0.1",
    "port": 80
  },
  "db_server": {
    "host": "127.0.0.1",
    "port": 3306
  }
}

How to Read the Config File

import json

with open('config.json', 'r') as f:
    config = json.load(f)

print(config['server'])  # localhost
print(config['web_server']['host'])  # 127.0.0.1
print(config['db_server']['port'])  # 3306

YAML

YAML is a human-friendly data serialization standard and it’s often used for writing configuration files. You can use the PyYAML module to work with YAML files.

Example of Config File in .yaml Format

server: localhost

web_server:
  host: 127.0.0.1
  port: 80

db_server:
  host: 127.0.0.1
  port: 3306

How to Read the Config File

import yaml

with open('config.yaml', 'r') as f:
    config = yaml.safe_load(f)

print(config['server'])  # localhost
print(config['web_server']['host'])  # 127.0.0.1
print(config['db_server']['port'])  # 3306

Environment Variables

For sensitive data, like usernames and passwords, you may want to use environment variables instead of plain text configuration files. The os module in Python allows you to access these environment variables.

How to Set Environment Variables in Python

import os

os.environ['USER'] = 'my_user'
os.environ['PASSWORD'] = 'my_password'

How to Get Environment Variables in Python

import os

user = os.getenv('USER')
password = os.getenv('PASSWORD')

print(user)  # my_user
print(password)  # my_password

In conclusion, Python provides a variety of methods and modules to handle configuration files in different formats. This flexibility allows you to choose the best approach according to your project requirements, making your code more modular, secure, and easier to manage.

Leave a Reply

Your email address will not be published. Required fields are marked *