Écrit par Nat Dunn, Webucator
Nous avons commencé à utiliser Python chez Webucator en 2015. Comme la plupart de nos projets de programmation plus importants ont à voir avec la création d’applications Web et que nous avions depuis longtemps décidé de notre pile Web, nous n’avons pas besoin de Python pour des projets à grande échelle. Cependant, nous l’utilisons régulièrement pour résoudre rapidement des problèmes et automatiser des tâches manuelles. Dans cet article, je vais décrire comment nous avons utilisé Python pour automatiser un problème qui s’est produit rarement, mais qui était une énorme nuisance quand il s’est produit.
En tant qu’entreprise de formation en informatique, nous écrivons de nombreux didacticiels avec de nombreux exemples de code, qui sont à la fois inclus dans les fichiers de classe et intégrés dans le manuel du cours. Pour éviter d’avoir à conserver le code à la fois dans le fichier et le manuel, notre système de génération, basé sur XML, lit les fichiers de classe dans le manuel. Pour que cela fonctionne, nous devons marquer chaque fichier de classe avec XML avant de le valider. Voici un exemple de fichier didacticiel balisé:
Le XML ici est simple. Il comprend un élément racine (cw:File
) et quelques éléments d’emphase (cw:Em
). La construction analyse ce XML et, en utilisant XSL:FO, l’extrait dans le manuel pour le créer:
Lorsque cela fonctionne comme prévu, cela fonctionne à merveille. Mais parfois, un auteur commit un fichier XML qui n’est pas bien formé, ce qui casse la construction. La personne qui construit le didacticiel n’est souvent pas la même personne que la personne qui écrit le didacticiel, il peut donc y avoir un décalage entre le moment où l’erreur se produit et le moment où elle est corrigée. De plus, notre système de construction maison ne gère pas bien l’erreur. Plutôt que de le signaler, il tourne et tourne. (Nous devons éventuellement résoudre ce problème, mais pour des raisons qui ne sont pas pertinentes pour cet article, cela ne se produira pas de sitôt.) La personne qui construit le didacticiel doit alors informer l’auteur que l’un des fichiers XML est mal formé, mais elle ne sait pas lequel. L’auteur doit ensuite vérifier chaque fichier XML jusqu’à ce qu’il trouve celui qui est mal formé. Fait un fichier à la fois avec un outil comme XMLSPY, c’est un processus laborieux. Entrez Python!
La dernière fois que j’ai dû passer par ce processus, j’ai réalisé que Python pouvait résoudre ce problème très rapidement. Le programme Python doit simplement parcourir les répertoires pour trouver tous les fichiers à vérifier, en fonction de leurs emplacements et de leurs extensions, vérifier si le fichier commence par « < cw: » car tous les fichiers ne sont pas marqués en XML, et utiliser lxml.etree
pour tenter d’analyser le fichier. En cas d’échec, il doit signaler le nom du fichier. Ce programme a pris moins de 15 minutes à écrire et a enregistré plus que cela la première fois que je l’ai utilisé. Je l’ai copié ci-dessous pour montrer à quel point c’est simple:
Ceci n’est qu’un des nombreux exemples dans lesquels nous utilisons Python chez Webucator pour automatiser rapidement et facilement des tâches manuelles fastidieuses.
Webucator fournit une formation Python en ligne et personnalisée sur site.