10. Anwendungsübung: Version 2

Diese neue Version führt die folgende Datei „[config.py]“ ein:
def configure():
import os
# Absoluter Pfad zum Ordner dieses Skripts
script_dir = os.path.dirname(os.path.abspath(__file__))
# Stammverzeichnis, von dem aus bestimmte relative Pfade gemessen werden
root_dir = "C:/Data/st-2020/dev/python/cours-2020/python3-flask-2020/impots"
# Abhängigkeiten der Anwendung
absolute_dependencies = [
f"{root_dir}/v01/shared",
]
# Konfiguration der Anwendung
config = {
# absoluter Pfad zur Steuerzahlerdatei
"taxpayersFilename": f"{script_dir}/../data/taxpayersdata.txt",
# Absoluter Pfad zur Ergebnisdatei
"resultsFilename": f"{script_dir}/../data/résultats.txt"
}
# Aktualisierung des Syspath
from myutils import set_syspath
set_syspath(absolute_dependencies)
# Konfiguration wird wiederhergestellt
return config
Kommentare
- Zeile 5: Hier wird der absolute Pfad des Ordners abgerufen, der das auszuführende Skript enthält, in diesem Fall das Skript [config.py]. Man erhält somit den absoluten Pfad des Ordners [main]. Dieser Ordner enthält auch das Hauptskript [main.py];
- Zeile 8: Wenn eine referenzierte Datei nicht zum Anwendungsordner gehört, wird nicht [script_dir] verwendet, um sie zu finden, sondern [root_dir]. Diese Zeile muss geändert werden, sobald die Anwendung ihren Speicherort im Dateisystem wechselt;
- Zeilen 11–13: Hier werden die absoluten Pfade aller Ordner aufgeführt, die sich im Python-Pfad befinden müssen, damit die Anwendung funktioniert. In Zeile 12 wird auf den Ordner [shared] der Version 1 der Anwendungsübung verwiesen;
- Zeilen 16–21: Hier wird die Konfiguration der Anwendung in einem Wörterbuch namens [config] definiert. Hier werden die absoluten Pfade der von der Anwendung verarbeiteten Textdateien eingetragen. Dazu wird [script_dir] verwendet, das – wie bereits erwähnt – hier den Ordner [main] bezeichnet;
- Zeilen 24–25: Hier wird der für die Anwendung erforderliche Python-Pfad festgelegt;
Das Hauptskript [main.py] lautet wie folgt:
# die Anwendung wird konfiguriert
import config
config = config.configure()
# Der Syspath ist konfiguriert – die Importe können durchgeführt werden
from impôts_module_01 import calcul_impôt, record_results, get_taxpayers_data
# Steuerpflichtigen-Datei
taxpayers_filename = config['taxpayersFilename']
# Ergebnisdatei
results_filename = config['resultsFilename']
# Code
try:
# Einlesen der Steuerpflichtigen-Daten
taxpayers = get_taxpayers_data(taxpayers_filename)
# Ergebnisliste
results = []
# Berechnung der Steuer der Steuerzahler
for taxpayer in taxpayers:
# Die Steuerberechnung gibt ein Schlüsselwörterbuch zurück
# ['marié', 'enfants', 'salaire', 'impôt', 'surcôte', 'décôte', 'réduction', 'taux']
result = calcul_impôt(taxpayer['marié'], taxpayer['enfants'], taxpayer['salaire'])
# Das Wörterbuch wird zur Ergebnisliste hinzugefügt
results.append(result)
# Die Ergebnisse werden gespeichert
record_results(results_filename, results)
except BaseException as erreur:
# Es können verschiedene Fehler auftreten: fehlende Datei, falscher Dateiinhalt
# Der Fehler wird angezeigt und die Anwendung wird beendet
print(f"L'erreur suivante s'est produite : {erreur}]\n")
finally:
print("Travail terminé...")
Kommentare
- Zeilen 1–4: Die Anwendung wird konfiguriert;
- Zeile 7: Nach der Konfiguration ist der Python-Pfad korrekt und enthält insbesondere den Ordner „[shared]“, in dem sich das Skript „[impôts_module_01]“ befindet. Aus diesem Skript werden die benötigten Funktionen importiert;
- Zeilen 9–12: Die Namen der verwendeten Dateien werden in der Konfiguration gefunden. Es handelt sich um absolute Pfadnamen;
- Zeilen 14–35: Hier findet sich der Code aus Version 1;
Version 1 funktionierte in einer Python-Konsole nicht. In derselben Konsole liefert Version 2 die folgenden Ergebnisse:
Es treten nun keine Fehler mehr auf.