`print` ist keine Funktion, sollte also mit den Klammern auch nicht so geschrieben werden, vor allem, weil das ja gar nicht das Argument ist, sondern noch mit dem %-Operator verarbeitet wird. Wenn (noch) kein else-Block existiert, schreibt man auch kein `else`. So wie jetzt sind die Einrückungen noch kaputter als vorher. Wenn ein Fehler gefunden wird, dann wird normalerweise eine Exception geworfen, die vom übergeordneten Programm an der Stelle abgefangen wird, wo eine sinnvolle Weiterverarbeitung trotz Fehlers möglich ist. Wenn es nicht sinnvoll ist, dann wird die Exception gar nicht abgefangen und das Programm beendet sich von alleine:
Code: Alles auswählen
import xml.etree.cElementTree as et
tree = et.ElementTree(file='config.xml')
variablen = {}
for element in tree.getroot():
if not element.text:
raise ValueError('%s: Wert fehlt! Bitte XML-Datei korrigieren.' % element.tag)
variablen[element.tag] = element.text
So macht die Fehlerprüfung aber auch keinen Sinn, weil wenn ein Tag komplett fehlt, dann gibt das keinen Fehler. Also macht es sinn, Einlesen und Vollständigkeitsprüfung zu trennen:
Code: Alles auswählen
import xml.etree.cElementTree as et
tree = et.ElementTree(file='config.xml')
variablen = {element.tag: element.text for element in tree.getroot() if element.text}
if "eintrag" not in variablen or not eintrag_valid(variablen["eintrag"]):
raise ValueError("Eintrag 'eintrag' nicht vorhanden oder fehlerhaft.")