IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Introduction à Python 3 et au framework web Flask par l'exemple


précédentsommairesuivant

10. Exercice d’application : version 2

Image non disponible

Cette nouvelle version introduit le fichier [config.py] suivant :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
def configure():
    import os

    # chemin absolu du dossier de ce script
    script_dir = os.path.dirname(os.path.abspath(__file__))

    # racine à partir de laquelle vont être mesurés certains chemins relatifs
    root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"

    # dépendances de l'application
    absolute_dependencies = [
        f"{root_dir}/v01/shared",
    ]

    # configuration de l'application
    config = {
        # chemin absolu du fichier des contribuables
        "taxpayersFilename"f"{script_dir}/../data/taxpayersdata.txt",
        # chemins absolu du fichier des résultats
        "resultsFilename"f"{script_dir}/../data/résultats.txt"
    }

    # mise à jour du syspath
    from myutils import set_syspath
    set_syspath(absolute_dependencies)

    # on rend la config
    return config

Commentaires

  • ligne 5 : on récupère le nom absolu du dossier qui contient le script qui s’exécute, ici le script [config.py]. On obtient donc le nom absolu du dossier [main]. C’est également ce dossier qui contient le script principal [main.py] ;

  • ligne 8 : lorsqu’un fichier référencé n’appartient pas au dossier de l’application, on n’utilisera pas [script_dir] pour le localiser mais [root_dir]. Cette ligne devra être changée dès que l’application change de place dans le système de fichiers ;

  • lignes 11-13 : on liste les noms absolus de tous les dossiers qui doivent se trouver dans le Python Path pour que l’application fonctionne. Ligne 12, on référence le dossier [shared] de la version 1 de l’exercice d’application ;

  • lignes 16-21 : définissent la configuration de l’application dans un dictionnaire [config]. Ici on inscrit les chemins absolus des fichiers texte manipulés par l’application. Pour cela, on utilise [script_dir] qui rappelons-le, désigne ici le dossier [main] ;

  • lignes 24-25 : on fixe le Python Path nécessaire à l’application ;

Le script principal [main.py] est le suivant :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
# on configure l'application
import config

config = config.configure()

# le syspath est configuré - on peut faire les imports
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data

# fichier des contribuables
taxpayers_filename = config['taxpayersFilename']
# fichier des résultats
results_filename = config['resultsFilename']

# code
try:

    # lecture des données contribuables
    taxpayers = get_taxpayers_data(taxpayers_filename)
    # liste des résultats
    results = []
    # on calcule l'impôt des contribuables
    for taxpayer in taxpayers:
        # le calcul de l'impôt renvoie un dictionnaire de clés
        # ['marié', 'enfants', 'salaire', 'impôt', 'surcôte', 'décôte', 'réduction', 'taux']
        result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
        # le dictionnaire est ajouté à la liste des résultats
        results.append(result)
    # on enregistre les résultats
    record_results(results_filename, results)
except BaseException as erreur:
    # il peut y avoir différentes erreurs : absence de fichier, contenu de fichier incorrect
    # on affiche l'erreur et on quitte l'application
    print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
    print("Travail terminé...")

Commentaires

  • lignes 1-4 : l’application est configurée ;

  • ligne 7 : on sait qu’après la configuration, le Python Path est correct et contient notamment le dossier [shared] qui contient le script [impôts_module_01]. De ce script, on importe les fonctions dont on a besoin ;

  • lignes 9-12 : les noms des fichiers utilisés sont trouvés dans la configuration. Ce sont des noms absolus ;

  • lignes 14-35 : on retrouve le code de la version 1 ;

La version 1 ne marchait pas dans une console Python. Dans cette même console, la version 2 donne les résultats suivants :

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

Aucune erreur n’est désormais rencontrée.


précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par Serge Tahé et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2020 Developpez.com.