15.1. 应用程序组成元素

未匹配的标注

Python 标准库的优势在于它的大小。它包括程序结构许多方面的实现,开发人员可以专注于使进行他们的应用程序独特的开发,而不是一遍又一遍地编写所有基本部分。本章介绍了一些较为常用的可重用构建块,它们解决了许多应用程序常见的问题。

argparse 是用于解析和验证命令行参数的接口。它支持将参数从字符串转换为整数和其他类型,在遇到选项时运行回调,为用户未提供的选项设置默认值,以及自动生成程序的使用说明。 getopt 实现了 C 程序和 shell 脚本可用的低级参数处理模型。它比其他选项解析库具有更少的功能,但这种简单性和熟悉性使其成为一种流行的选择。

交互式程序应使用 readline 为用户提供命令提示符。它中的工具包括用于管理历史记录,自动完成部分命令以及使用 emacsvi 的键位绑定进行交互式编辑等。要安全地提示用户输入密码或其他机密变量,而不是在键入屏幕时回显该值,请使用 getpass

cmd 模块包括一个编写交互式命令驱动的 shell 风格程序的框架。它提供主循环并处理与用户的交互,因此应用程序只需要为各个命令实现处理回调。

shlex 是一种 shell 样式语法的解析器,其行中由空格分隔的标记组成。它对引号和转义序列很智能,因此带有嵌入空格的文本被视为单个标记。 shlex 可以作为域特定语言(如配置文件或编程语言)的标记器。

使用 configparser 可以轻松管理应用程序配置文件。它可以在程序运行间隔时保存用户首选项,并在下次应用程序启动时读取它们,甚至可以用作简单的数据文件格式。

在现实世界中部署的应用程序需要为其用户提供调试信息。简单的错误消息和回溯是有帮助的,但是当难以重现问题时,完整活动日志可以直接指向导致失败的事件链。 logging 模块包括一套功能齐全的 API ,用于管理日志文件,支持多个线程,甚至还有与远程日志记录守护程序的接口,用于集中日志记录。

Unix 环境中程序最常见的模式之一是逐行过滤器,它可以读取数据,修改数据并将其写回。从文件中读取很简单,但是创建过滤器应用程序可能没有比使用 fileinput 模块更简单的方法。它的 API 是一个行迭代器,它产生每个输入行,因此程序的主体是一个简单的 for 循环。该模块处理解析包含要处理的文件名的命令行参数,或者直接从标准输入读取,因此在 fileinput 上构建的工具可以直接在文件上运行,也可以作为管道程序的一部分运行。

使用 atexit 来安排在解释器关闭程序时运行的函数。 注册退出回调对于通过注销远程服务,关闭文件等来释放资源非常有用。

sched 模块实现了一个调度程序,用于在将来的设定时间触发事件。 API 没有规定「时间」的定义,因此可以使用从真正的时钟时间到解释器步骤的任何内容。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/pymotw/applicat...

译文地址:https://learnku.com/docs/pymotw/applicat...

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~