Skip to content

10. Практичне завдання: версія 2

Image

У цій новій версії додано такий файл: [config.py]:


def configure():
    import os

    # абсолютний шлях до папки цього скрипта
    script_dir = os.path.dirname(os.path.abspath(__file__))

    # кореневий каталог, від якого будуть відраховуватися певні відносні шляхи
    root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"

    # залежності додатка
    absolute_dependencies = [
        f"{root_dir}/v01/shared",
    ]

    # конфігурація додатка
    config = {
        # абсолютний шлях до файлу платників податків
        "taxpayersFilename"f"{script_dir}/../data/taxpayersdata.txt",
        # абсолютний шлях до файлу результатів
        "resultsFilename"f"{script_dir}/../data/résultats.txt"
    }

    # оновлення syspath
    from myutils import set_syspath
    set_syspath(absolute_dependencies)

    # застосовуємо конфігурацію
    return config

Коментарі

  • рядок 5: отримуємо абсолютний шлях до папки, що містить скрипт, який виконується, у даному випадку скрипт [config.py]. Отже, отримуємо абсолютний шлях до папки [main]. Ця папка також містить головний скрипт [main.py];
  • рядок 8: коли файл, на який є посилання, не належить до папки програми, для його пошуку не використовуватиметься [script_dir], а [root_dir]. Цей рядок потрібно буде змінити, щойно програма змінить своє місце розташування у файловій системі;
  • рядки 11–13: тут наведено абсолютні імена всіх папок, які мають бути в Python Path для роботи програми. У рядку 12 вказано папку [shared] з версії 1 навчальної програми;
  • рядки 16–21: визначають конфігурацію програми у словнику [config]. Тут вказуються абсолютні шляхи до текстових файлів, з якими працює додаток. Для цього використовується [script_dir], який, нагадаємо, позначає тут папку [main];
  • рядки 24–25: задається шлях Python Path, необхідний для роботи програми;

Головний скрипт [main.py] має такий вигляд:


# налаштовуємо додаток
import config

config = config.configure()

# syspath налаштовано — можна виконувати імпорт
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data

# файл платників податків
taxpayers_filename = config['taxpayersFilename']
# файл результатів
results_filename = config['resultsFilename']

# код
try:

    # зчитування даних платників податків
    taxpayers = get_taxpayers_data(taxpayers_filename)
    # список результатів
    results = []
    # розрахунок податку платників податків
    for taxpayer in taxpayers:
        # розрахунок податку повертає словник ключів
        # ['marié', 'enfants', 'salaire', 'impôt', 'surcôte', 'décôte', 'réduction', 'taux']
        result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
        # словник додано до списку результатів
        results.append(result)
    # результати зберігаються
    record_results(results_filename, results)
except BaseException as erreur:
    # можуть виникнути різні помилки: відсутність файлу, неправильний вміст файлу
    # виводиться повідомлення про помилку та закривається програма
    print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
    print("Travail terminé...")

Коментарі

  • рядки 1–4: додаток налаштовується;
  • рядок 7: відомо, що після налаштування шлях до Python є правильним і, зокрема, містить папку [shared], у якій знаходиться скрипт [impôts_module_01]. З цього скрипта імпортуються необхідні функції;
  • рядки 9–12: імена використовуваних файлів знаходяться в конфігурації. Це абсолютні імена;
  • рядки 14–35: тут міститься код версії 1;

Версія 1 не працювала в консолі Python. У цій же консолі версія 2 дає такі результати:

(venv) C:\Data\st-2020\dev\python\cours-2020\python3-flask-2020\impots\v02>python main/main.py
Travail terminé...

Тепер помилок не виникає.