Должна быть возможность задавать пути за пределами кода с помощью переменных окружения, чтобы программа не была ограничена путями, зашитыми в код.


Пример

Плохо:


import os


def get_lesson(filename):
    filepath = os.path.join('path/to/lessons_files', filename)
    with open(filepath, 'r') as file:
        raw_lesson = file.read()
    ...
    return lesson


def main():
    filename = ...
    lesson = get_lesson(filename)

Хорошо:


import os

from environs import Env


def get_lesson(filepath):
    with open(filepath, 'r') as file:
        raw_lesson = file.read()
    ...
    return lesson


def main():
    env = Env()
    env.read_env()

    lessons_folder_path = env.str('LESSONS_FOLDER_PATH', 'path/to/lessons_files')
    filenames = ...
    for filename in filenames:
        filepath = os.path.join(lessons_folder_path, filename)
        lesson = get_lesson(filepath)