如何编写完美的 Python 命令行程序?( 三 )

最后我们的脚本大致如下:

这个脚本遵循了一些我们前面推荐的规则:

支持默认秘钥和默认模式

基本的错误处理(没有提供输入文本的情况,以及提供了无法识别的参数的情况)

出错时或者不带任何参数调用脚本时会显示文档:

但是,这个凯撒加密法脚本太长了(39 行,其中甚至还没包括加密代码本身),而且很难读懂。

解析命令行参数应该还有更好的办法……

试试 argparse?

argparse 是 Python 用来解析命令行参数的标准库。

我们来看看用 argparse 怎样编写凯撒加密的脚本:

这段代码也遵循了上述规则,而且与前面的手工编写的脚本相比,可以提供更准确的文档,以及更具有交互性的错误处理:

但是,仔细看了这段代码后,我发现(虽然有点主观)函数开头的几行(从7行到13行)定义了参数,但定义方式并不太优雅:它太臃肿了,而且完全是程式化的。应该有更描述性、更简洁的方法。

推荐阅读