Programmieren für Ingenieure

Python Übung 4: Praxis Vorbereitung

Als Übung kannst du an dieser Stelle die drei Code Erweiterungen aus den letzten Lektionen für Fehlerhandhabung, logging und zur Änderung der Einstellungen über eine Setting.xml Datei auch für das kleinere Programm zum Kopieren der Daten DateienKopieren.py einbauen.

Wenn du einmal nicht mehr alleine weiterkommst, kannst du dich gern an dem Umsetzungsvorschlag in der Datei DateienKopieren_4.py orientieren.

Darin habe ich zuerst die Settings.xml Datei eingebunden und anschließend den Variablen quellOrdner und zielOrdner Werte aus der Einstellung Datei zugewiesen.
Außerdem habe ich ein einfaches logging eingebaut welches den Start und Endzeitpunkt der Ausführung als Information mitschreibt und die Quelle und das Ziel jeder kopierten Datei speichert, wenn das logging Level auf Debug gestellt ist.
Zuletzt habe ich den größten Teil des Codes in einen try: Block verschoben, sodass im Fehlerfall die Information der Exception in dem logfile gespeichert wird bevor das Programm beendet wird:

import os
from shutil import copy2
import xml.etree.ElementTree as ET
import logging

### Einstellungen aus Settings.xml Datei einlesen
tree = ET.parse(„Settings.xml“)
settings = tree.getroot()

### Einfaches logging mit logging Modul
logging.basicConfig(filename=“LogFileName.log“, level=logging.getLevelName(settings.find(„LoggingLevel“).text), format=“%(asctime)s; %(levelname)s; %(message)s“)
logging.info(„Dateien kopieren gestartet.“)

try:
    quellOrdner = settings.find(„QuellOrdner“).text
    zielOrdner = settings.find(„ZielOrdner“).text

    # Schleife über alle Dateien in einem Ordner und allen Unterordnern
    for pfad, unterverzeichnisse, dateien in os.walk(quellOrdner):
      for datei in dateien:
        # Pfad und Dateinamen kombinieren
        quelle = os.path.join(pfad, datei)
        ziel = quelle.replace(quellOrdner, zielOrdner)

        # Zielverzeichnis erstellen falls es noch nicht existiert
        if not os.path.exists(os.path.dirname(ziel)):
          os.makedirs(os.path.dirname(ziel))

        # Datei kopieren
        logging.debug(f“Quelle: {quelle} –> Ziel: {ziel}“)
        copy2(quelle, ziel)

    logging.info(„Dateien kopieren abgeschlossen.“)

except Exception as ex:
    logging.exception(f“EXCEPTION: {ex}“)
    print(„Es ist eine Exception aufgetreten, das Programm wird jetzt beendet.“)


Falls du Fragen hast oder auch mit Hilfe meines Umsetzungsvorschlages nicht vorankommst, dann lass es mich bitte unbedingt wissen.
Viel Erfolg bei der Übung, und ich freue darauf dich gleich in der nächsten Lektion wiederzusehen =)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.