Programmieren für Ingenieure
Python Übung 4: Praxis Vorbereitung
Inhaltsverzeichnis
- 1) Willkommen
- 2) Mindset
- 3) Kursübersicht
- 4) Download und Installation
- 5) Hello World
- 6) Entwicklungsumgebung
- 7) Informationen finden
- 8) Variablen
- 9) String
- 10) Integer, Float
- 11) Boolean
- 12) Abfragen
- 13) while Schleifen
- 14) for Schleifen
- 15) List
- 16) Dictionary
- 17) None
- 18) Datentypen umwandeln
- 19) Funktionen
- 20) Module
- 21) Debugging
- 22) Übungen
- 23) Übung 1: Zahlen addieren
- 24) Übung 2: Groesseren Wert finden
- 25) Übung 3: Kreis Fläche und Umfang berechnen
- 26) Entwicklungsprozess
- 27) Beispielprogramm Prozessdaten 1: kopieren
- 28) Beispielprogramm Prozessdaten 2: auswerten
- 29) Einstellungen über Settings.xml
- 30) Logging
- 31) Exceptions
- 32) Übung 4: Praxisvorbereitung
- 33) Typische Fehler
- 34) Code Optimierung
- 35) Ausführung
- 36) Ausführung 1: IDE py cmd bat
- 37) Ausführung 2: Windows exe
- 38) Ausführung 3: Aufgabenplanung
- 39) Ausführung 4: Setup Raspberry Pi
- 40) Ausführung 5: Raspberry Pi Ausführung
- 41) Danke
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 =)