使用 Python 自动化处理繁琐任务
我们于 2015 年开始在 Webucator 使用 Python。由于我们大多数大型编程项目都与构建基于 Web 的应用程序有关,并且我们很早以前就确定了我们的 Web 技术栈,因此我们不需要 Python 来处理任何大型项目。然而,我们定期使用它来快速解决问题并自动化手动任务。在本文中,我将描述我们如何使用 Python 自动化一个不经常发生,但一旦发生就非常令人烦恼的问题。
作为一家 IT 培训公司,我们编写了大量的课程材料,其中包含许多代码示例,这些示例既包含在课程文件中,也嵌入在课程手册中。为了避免在文件和手册中都维护代码,我们基于 XML 的构建系统将课程文件读入手册。为了实现这一点,我们必须在提交每个课程文件之前用 XML 标记它。这是一个标记的课程文件示例:
这里的 XML 很简单。它包含一个根元素(cw:File
)和几个强调元素(cw:Em
)。构建系统解析此 XML,并使用 XSL:FO 将其拉入手册以创建以下内容:
当它按预期工作时,效果非常好。但有时作者会提交一个格式不正确的 XML 文件,这会破坏构建。构建课程材料的人员通常与编写课程材料的人员不是同一个人,因此从错误发生到修复之间可能会有延迟。此外,我们自己开发的构建系统对错误处理不佳。它不会报告错误,而是不断旋转。(我们最终需要修复它,但由于与本文无关的原因,这在短期内不会发生。)构建课程材料的人员必须通知作者某个 XML 文件格式不佳,但她不知道是哪一个。然后作者必须检查每个 XML 文件,直到找到格式不佳的文件。使用像 XMLSPY 这样的工具一次检查一个文件,这是一个费力的过程。Python 登场!
上次我不得不经历这个过程时,我意识到 Python 可以非常快速地解决这个问题。Python 程序只需遍历目录,根据文件位置和扩展名查找所有需要检查的文件,检查文件是否以 "<cw:" 开头,因为并非所有文件都标记为 XML,然后使用 lxml.etree
尝试解析文件。如果失败,它应该报告文件名。这个程序花了不到 15 分钟编写,并且在我第一次使用它时就节省了更多时间。我已将其复制到下面以展示它有多简单:
这只是我们在 Webucator 使用 Python 快速轻松地自动化耗时手动任务的众多示例之一。
Webucator 提供在线实时和定制的现场 Python 培训。