geschreven door Nat Dunn, Webucator
we begonnen Python te gebruiken bij Webucator in 2015. Aangezien de meeste van onze Grotere programmeerprojecten te maken hebben met het bouwen van web-based applicaties en we hadden lang geleden besloten op onze web stack, hebben we Python niet nodig voor grootschalige projecten. We gebruiken het echter regelmatig om problemen snel op te lossen en handmatige taken te automatiseren. In dit artikel zal ik beschrijven hoe we Python gebruikten om een probleem te automatiseren dat zelden voorkwam, maar dat een enorme overlast was toen het gebeurde.
als IT-opleidingsbedrijf schrijven we veel cursusmateriaal met veel code-voorbeelden, die zowel in de klassebestanden als in de cursushandleiding zijn opgenomen. Om te voorkomen dat de code zowel in het bestand als in de handleiding moet worden bewaard, leest ons build-systeem, dat op XML is gebaseerd, de class-bestanden in de handleiding. Om dat te laten werken, moeten we elk class bestand markeren met XML voordat we het committen. Hier is een voorbeeld van een gemarkeerd cursusmateriaal bestand:
de XML hier is eenvoudig. Het bevat een root-element (cw:File
) en enkele accentueringselementen (cw:Em
). De build ontleedt deze XML en, met behulp van XSL:FO, trekt het in de handleiding om dit te maken:
als dit werkt zoals verwacht, werkt het prachtig. Maar soms zal een auteur een bestand committen dat niet goed gevormde XML is, wat de build breekt. De persoon die de cursusstof bouwt is vaak niet dezelfde persoon als de persoon die de cursusstof schrijft, dus er kan een vertraging zijn tussen het moment dat de fout optreedt en het moment dat deze wordt opgelost. Bovendien kan ons zelfgekweekte bouwsysteem de fout niet goed verwerken. In plaats van het te melden, het draait en draait. (We moeten dat uiteindelijk oplossen, maar om redenen die niet relevant zijn voor dit artikel, dat gaat niet snel gebeuren.) De persoon die de cursusstof bouwt moet dan de auteur laten weten dat een van de XML-bestanden slecht is gevormd, maar ze weet niet welke. De auteur moet dan elk XML-bestand controleren totdat hij degene vindt die slecht is gevormd. Gedaan een bestand op een moment met een tool als XMLSPY, dit is een moeizaam proces. Python Binnen.
de laatste keer dat ik dit proces moest doorlopen, realiseerde ik me dat Python dit probleem zeer snel kon oplossen. Het Python programma moet gewoon door de mappen lopen om alle bestanden te vinden die gecontroleerd moeten worden, gebaseerd op hun locaties en extensies, om te controleren of het bestand begint met “<cw:” omdat niet alle bestanden gemarkeerd zijn als XML, en om lxml.etree
te gebruiken om te proberen het bestand te ontleden. Als het mislukt, moet het de bestandsnaam rapporteren. Dit programma duurde minder dan 15 minuten om te schrijven en opgeslagen meer dan dat de eerste keer dat ik het gebruikte. Ik heb het hieronder gekopieerd om te laten zien hoe eenvoudig het is:
dit is slechts een van de vele voorbeelden waarin we Python at Webucator gebruiken om snel en eenvoudig tijdintensieve handmatige taken te automatiseren.
Webucator biedt live online en aangepaste on-site Python training.