Mühsame Aufgaben mit Python automatisieren
Wir haben 2015 begonnen, Python bei Webucator einzusetzen. Da die meisten unserer größeren Programmierprojekte mit dem Aufbau webbasierter Anwendungen zu tun haben und wir uns schon vor langer Zeit für unseren Web-Stack entschieden hatten, benötigten wir Python nicht für große Projekte. Wir nutzen es jedoch regelmäßig, um Probleme schnell zu lösen und manuelle Aufgaben zu automatisieren. In diesem Artikel werde ich beschreiben, wie wir Python verwendet haben, um ein Problem zu automatisieren, das nur selten auftrat, aber eine enorme Belästigung darstellte, wenn es doch vorkam.
Als IT-Schulungsunternehmen schreiben wir viele Kursmaterialien mit zahlreichen Codebeispielen, die sowohl in den Klassendateien als auch im Kurskatalog enthalten sind. Um zu vermeiden, dass der Code sowohl in der Datei als auch im Handbuch gepflegt werden muss, liest unser XML-basiertes Build-System die Klassendateien in das Handbuch ein. Damit dies funktioniert, müssen wir jede Klassendatei vor dem Commit mit XML markieren. Hier ist ein Beispiel für eine markierte Kursmaterialdatei

Das XML hier ist einfach. Es enthält ein Wurzelelement (cw:File) und einige Hervorhebungselemente (cw:Em). Der Build analysiert dieses XML und zieht es mithilfe von XSL:FO in das Handbuch, um dies zu erstellen

Wenn dies wie erwartet funktioniert, funktioniert es wunderbar. Aber manchmal committet ein Autor eine Datei, die kein wohlgeformtes XML ist, was den Build bricht. Die Person, die das Kursmaterial erstellt, ist oft nicht dieselbe Person, die das Kursmaterial schreibt, sodass es eine Verzögerung zwischen dem Zeitpunkt des Auftretens des Fehlers und dem Zeitpunkt seiner Behebung geben kann. Darüber hinaus kommt unser selbstentwickeltes Build-System mit dem Fehler nicht gut zurecht. Anstatt ihn zu melden, dreht es sich und dreht sich. (Das müssen wir irgendwann beheben, aber aus Gründen, die für diesen Artikel nicht relevant sind, wird das nicht so bald passieren.) Die Person, die das Kursmaterial erstellt, muss dann den Autor informieren, dass eine der XML-Dateien schlecht formatiert ist, aber sie weiß nicht, welche. Der Autor muss dann jede XML-Datei überprüfen, bis er die schlecht formatierte findet. Dies ist ein mühsamer Prozess, der einzeln mit einem Werkzeug wie XMLSPY durchgeführt wird. Hier kommt Python ins Spiel!
Bei der letzten Gelegenheit, als ich diesen Prozess durchlaufen musste, erkannte ich, dass Python dieses Problem sehr schnell lösen könnte. Das Python-Programm muss einfach die Verzeichnisse durchlaufen, alle zu prüfenden Dateien finden, basierend auf ihren Speicherorten und Erweiterungen, prüfen, ob die Datei mit "<cw:" beginnt, da nicht alle Dateien als XML markiert sind, und lxml.etree verwenden, um zu versuchen, die Datei zu parsen. Bei einem Fehler sollte es den Dateinamen melden. Dieses Programm hat weniger als 15 Minuten zum Schreiben gebraucht und sich bei der ersten Verwendung bereits mehrfach bezahlt gemacht. Ich habe es unten kopiert, um zu zeigen, wie einfach es ist

Dies ist nur eines von vielen Beispielen, bei denen wir bei Webucator Python verwenden, um zeitintensive, manuelle Aufgaben schnell und einfach zu automatisieren.
Webucator bietet Live-Online- und maßgeschneiderte Python-Schulungen vor Ort an.
