使用 Python 自动化繁琐任务
我们在 Webucator 公司于 2015 年开始使用 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 培训。