Scritto da Nat Dunn, Webucator
Abbiamo iniziato a utilizzare Python a Webucator nel 2015. Poiché la maggior parte dei nostri progetti di programmazione più grandi ha a che fare con la creazione di applicazioni basate sul Web e avevamo deciso molto tempo fa sul nostro stack Web, non abbiamo avuto bisogno di Python per progetti su larga scala. Tuttavia, lo usiamo regolarmente per risolvere rapidamente i problemi e per automatizzare le attività manuali. In questo articolo, descriverò come abbiamo usato Python per automatizzare un problema che si è verificato raramente, ma è stato un enorme fastidio quando si è verificato.
Come società di formazione IT, scriviamo un sacco di materiale didattico con molti esempi di codice, che sono entrambi inclusi nei file di classe e incorporati nel manuale del corso. Per evitare di dover mantenere il codice sia nel file che nel manuale, il nostro sistema di compilazione, basato su XML, legge i file di classe nel manuale. Per farlo funzionare, dobbiamo contrassegnare ogni file di classe con XML prima di commetterlo. Ecco un esempio di un file courseware contrassegnato:
L’XML qui è semplice. Include un elemento radice (cw:File
) e alcuni elementi di enfasi (cw:Em
). La build analizza questo XML e, usando XSL: FO, lo inserisce nel manuale per crearlo:
Quando funziona come previsto, funziona magnificamente. Ma a volte un autore commetterà un file che non è XML ben formato, che interrompe la build. La persona che costruisce il materiale didattico spesso non è la stessa persona della persona che scrive il materiale didattico, quindi può esserci un ritardo tra il momento in cui si verifica l’errore e il momento in cui viene risolto. Inoltre, il nostro sistema di costruzione domestico non gestisce bene l’errore. Piuttosto che segnalarlo, gira e gira. (Abbiamo bisogno di risolvere che alla fine, ma per ragioni non rilevanti per questo articolo, che non sta per accadere in qualunque momento presto.) La persona che costruisce il courseware allora deve far sapere all’autore che uno degli archivi XML è mal formato, ma non sa quale. L’autore deve quindi controllare ogni file XML finché non trova quello che è mal formato. Fatto un file alla volta con uno strumento come XMLSPY, questo è un processo laborioso. Inserisci Python!
L’ultima volta che ho dovuto passare attraverso questo processo, mi sono reso conto che Python potrebbe risolvere questo problema molto rapidamente. Il programma Python deve semplicemente scorrere le directory trovando tutti i file che devono essere controllati, in base alle loro posizioni ed estensioni, verificare se il file inizia con “<cw:” poiché non tutti i file sono contrassegnati come XML e utilizzare lxml.etree
per tentare di analizzare il file. In caso di errore, dovrebbe riportare il nome del file. Questo programma ha richiesto meno di 15 minuti per scrivere e ha salvato più di quello la prima volta che l’ho usato. L’ho copiato qui sotto per mostrare quanto sia semplice:
Questo è solo uno dei tanti esempi in cui usiamo Python a Webucator per automatizzare rapidamente e facilmente le attività manuali ad alta intensità di tempo.
Webucator fornisce live online e formazione Python in loco personalizzata.