Escrito por Nat Dunn, Webucator
Comenzamos a usar Python en Webucator en 2015. Como la mayoría de nuestros proyectos de programación más grandes tienen que ver con la creación de aplicaciones basadas en la web y hace mucho que nos decidimos por nuestra pila web, no hemos necesitado Python para ningún proyecto a gran escala. Sin embargo, lo usamos regularmente para resolver problemas rápidamente y automatizar tareas manuales. En este artículo, describiré cómo usamos Python para automatizar un problema que ocurría con poca frecuencia, pero que era una gran molestia cuando ocurría.
Como empresa de capacitación en TI, escribimos mucho material didáctico con muchos ejemplos de código, que se incluyen en los archivos de clase y se incrustan en el manual del curso. Para evitar tener que mantener el código tanto en el archivo como en el manual, nuestro sistema de compilación, basado en XML, lee los archivos de clase en el manual. Para hacerlo, tenemos que marcar cada archivo de clase con XML antes de cometerlo. Aquí hay una muestra de un archivo de material didáctico marcado:
El XML aquí es simple. Incluye un elemento raíz (cw:File
) y algunos elementos de énfasis (cw:Em
). La compilación analiza este XML y, usando XSL: FO, lo introduce en el manual para crear esto:
Cuando esto funciona como se esperaba, funciona maravillosamente. Pero a veces un autor confirma un archivo que no está bien formado XML, lo que rompe la compilación. La persona que construye el material didáctico a menudo no es la misma persona que la persona que escribe el material didáctico, por lo que puede haber un retraso entre el momento en que se produce el error y el momento en que se corrige. Además, nuestro sistema de construcción de cosecha propia no maneja bien el error. En lugar de reportarlo, gira y gira. (Tenemos que arreglar eso con el tiempo, pero por razones que no son relevantes para este artículo, eso no va a suceder en el corto plazo.) La persona que construye el material didáctico tiene que hacerle saber al autor que uno de los archivos XML está mal formado, pero no sabe cuál. El autor tiene que revisar cada archivo XML hasta encontrar el que está mal formado. Hacer un archivo a la vez con una herramienta como XMLSPY es un proceso laborioso. ¡Entra Python!
La última vez que tuve que pasar por este proceso, me di cuenta de que Python podía resolver este problema muy rápidamente. El programa Python simplemente tiene que recorrer los directorios buscando todos los archivos que necesitan comprobación, en función de sus ubicaciones y extensiones, comprobar si el archivo comienza con «<cw:», ya que no todos los archivos están marcados como XML, y usar lxml.etree
para intentar analizar el archivo. En caso de fallo, debe informar el nombre del archivo. Este programa tardó menos de 15 minutos en escribirse y ahorró más que eso la primera vez que lo usé. Lo he copiado a continuación para mostrar lo simple que es:
Este es solo uno de los muchos ejemplos en los que utilizamos Python en Webucator para automatizar de forma rápida y sencilla tareas manuales que requieren mucho tiempo.
Webucator proporciona capacitación en Python en vivo en línea y personalizada in situ.