10. Praxisübung: Version 2

Diese neue Version führt die folgende [config.py]-Datei ein:
| def configure():
import os
# absolute path of this script's folder
script_dir = os.path.dirname(os.path.abspath(__file__))
# root from which certain relative paths are measured
root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"
# application dependencies
absolute_dependencies = [
f"{root_dir}/v01/shared",
]
# application configuration
config = {
# absolute path of the taxpayer file
"taxpayersFilename": f"{script_dir}/../data/taxpayersdata.txt",
# absolute path of the results file
"resultsFilename": f"{script_dir}/../data/résultats.txt"
}
# update syspath
from myutils import set_syspath
set_syspath(absolute_dependencies)
# return the config
return config
|
Kommentare
- Zeile 5: Wir ermitteln den absoluten Pfad des Ordners, der das ausgeführte Skript enthält, in diesem Fall das Skript [config.py]. Dadurch erhalten wir den absoluten Pfad des Ordners [main]. Dies ist auch der Ordner, der das Hauptskript [main.py] enthält;
- Zeile 8: Wenn eine referenzierte Datei nicht zum Anwendungsordner gehört, verwenden wir nicht [script_dir], um sie zu finden, sondern [root_dir]. Diese Zeile muss geändert werden, sobald die Anwendung an einen anderen Ort im Dateisystem verschoben wird;
- Zeilen 11–13: Wir listen die absoluten Pfade aller Ordner auf, die im Python-Pfad enthalten sein müssen, damit die Anwendung funktioniert. In Zeile 12 verweisen wir auf den Ordner [shared] aus Version 1 der Anwendungsübung;
- Zeilen 16–21: Definieren Sie die Konfiguration der Anwendung in einem [config]-Dictionary. Hier geben wir die absoluten Pfade der von der Anwendung verarbeiteten Textdateien an. Dazu verwenden wir [script_dir], das sich, zur Erinnerung, hier auf den Ordner [main] bezieht;
- Zeilen 24–25: Wir legen den von der Anwendung benötigten Python-Pfad fest;
Das Hauptskript [main.py] lautet wie folgt:
| # configure the application
import config
config = config.configure()
# syspath is configured - imports can be made
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data
# taxpayer file
taxpayers_filename = config['taxpayersFilename']
# results file
results_filename = config['resultsFilename']
# code
try:
# reading taxpayer data
taxpayers = get_taxpayers_data(taxpayers_filename)
# results list
results = []
# taxpayers' taxes are calculated
for taxpayer in taxpayers:
# tax calculation returns a dictionary of keys
# ['married', 'children', 'salary', 'tax', 'surcôte', 'décôte', 'réduction', 'taux']
result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
# the dictionary is added to the list of results
results.append(result)
# we record the results
record_results(results_filename, results)
except BaseException as erreur:
# there may be various errors: no file, incorrect file content
# display the error and exit the application
print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
print("Travail terminé...")
|
Kommentare
- Zeilen 1–4: Die Anwendung wird konfiguriert;
- Zeile 7: Wir wissen, dass nach der Konfiguration der Python-Pfad korrekt ist und den Ordner [shared] enthält, in dem sich das Skript [impôts_module_01] befindet. Aus diesem Skript importieren wir die benötigten Funktionen;
- Zeilen 9–12: Die Namen der verwendeten Dateien sind in der Konfiguration zu finden. Es handelt sich um absolute Pfade;
- Zeilen 14–35: Dies ist der Code aus Version 1;
Version 1 funktionierte in einer Python-Konsole nicht. In derselben Konsole liefert Version 2 die folgenden Ergebnisse:
| (venv) C:\Data\st-2020\dev\python\cours-2020\python3-flask-2020\impots\v02>python main/main.py
Travail terminé...
|
Es sind keine Fehler aufgetreten.