optparse 代码迁移至 argparse

argparse 模块提供了一些未获 optparse 模块原生支持的更高层级特性,包括:

  • 处理位置参数。

  • 支持子命令。

  • 允许替代选项前缀例如 +/

  • 处理零个或多个以及一个或多个风格的参数。

  • 生成更具信息量的用法消息。

  • 提供用于定制 typeaction 的更为简单的接口。

最初的时候,argparse 模块试图维持与 optparse 的兼容性。 不过,在支持声明式命令行选项处理(并将位置参数处理留给应用程序代码)以及在声明式界面中同时支持名称选项和位置参数之间底层设计方面的差异意味着其 API 逐渐与 optparse 的拉开了差距。

正如 选择参数解析库 中所描述的,目前使用 optparse 并且对其效果感到满意的应用程序完全可以继续使用 optparse

考虑迁移的应用程序开发者也应当先仔细查看在该章节中描述的内在行为差异列表再决定是否需要迁移。

对于确定选择从 optparse 迁移到 argparse 的应用程序,下列建议应该会有帮助: