Geschrieben von Nat Dunn, Webucator
Wir haben 2015 mit Python bei Webucator begonnen. Da die meisten unserer größeren Programmierprojekte mit dem Erstellen webbasierter Anwendungen zu tun haben und wir uns vor langer Zeit für unseren Web-Stack entschieden haben, haben wir Python für keine großen Projekte benötigt. Wir verwenden 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 selten auftrat, aber ein großes Ärgernis war, als es auftrat.
Als IT-Schulungsunternehmen schreiben wir viel Kursmaterial mit vielen Codebeispielen, die sowohl in den Klassendateien enthalten als auch in das Kurshandbuch eingebettet sind. Um zu vermeiden, dass der Code sowohl in der Datei als auch im Handbuch gepflegt werden muss, liest unser Build-System, das XML-basiert ist, die Klassendateien in das Handbuch ein. Damit das funktioniert, müssen wir jede Klassendatei mit XML markieren, bevor wir sie festschreiben. Hier ist ein Beispiel einer markierten Kursdatendatei:
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 mit XSL: FO in das Handbuch, um folgendes zu erstellen:
Wenn dies wie erwartet funktioniert, funktioniert es wunderbar. Aber manchmal schreibt ein Autor eine Datei fest, die kein wohlgeformtes XML ist, was den Build unterbricht. Die Person, die die Kursunterlagen erstellt, ist oft nicht dieselbe Person wie die Person, die die Kursunterlagen schreibt, Daher kann es zu einer Verzögerung zwischen dem Zeitpunkt des Auftretens des Fehlers und dem Zeitpunkt der Behebung kommen. Darüber hinaus behandelt unser hausgemachtes Build-System den Fehler nicht gut. Anstatt es zu melden, dreht es sich und dreht sich. (Wir müssen das irgendwann beheben, aber aus Gründen, die für diesen Artikel nicht relevant sind, wird das nicht so schnell passieren.) Die Person, die die Kursunterlagen erstellt, muss dem Autor dann mitteilen, 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 geformte Datei findet. Eine Datei nach der anderen mit einem Tool wie XMLSPY zu erstellen, ist ein mühsamer Prozess. Geben Sie Python!
Als ich das letzte Mal diesen Prozess durchlaufen musste, wurde mir klar, dass Python dieses Problem sehr schnell lösen konnte. Das Python-Programm muss einfach die Verzeichnisse durchlaufen und alle zu überprüfenden Dateien anhand ihrer Speicherorte und Erweiterungen finden, prüfen, ob die Datei mit „<cw:“ beginnt, da nicht alle Dateien als XML markiert sind, und verwenden Sie lxml.etree
, um zu versuchen, die Datei zu analysieren. Bei einem Fehler sollte der Dateiname gemeldet werden. Das Schreiben dieses Programms dauerte weniger als 15 Minuten und sparte mehr als das, als ich es zum ersten Mal verwendete. Ich habe es unten kopiert, um zu zeigen, wie einfach es ist:
Dies ist nur eines von vielen Beispielen, in denen wir Python bei Webucator einsetzen, um zeitintensive, manuelle Aufgaben schnell und einfach zu automatisieren.
Webucator bietet Live-Online- und maßgeschneiderte Python-Schulungen vor Ort.