Python 使用getopt解析命令行参数

发布时间 2023-12-19 22:34:17作者: leviliang

1、getopt 模块

此模块可协助脚本解析 sys.argv 中的命令行参数。 它支持与 Unix getopt() 函数相同的惯例(包括形式如 '-' 与 '--' 的参数的特殊含义)。 也能通过可选的第三个参数来使用与 GNU 软件所支持形式相类似的长选项。

1)getopt.getopt(args, shortopts, longopts=[])

方法作用是用于解析命令行选项与形参列表, args 为要解析的参数列表,不包含最开头的对正在运行的程序的引用。 通常这意味着 sys.argv[1:]。 shortopts 为脚本所要识别的字母选项,包含要求后缀一个冒号 (':';即与 Unix getopt() 所用的格式相同) 的选项。另外,与 GNU getopt() 不同,在非选项参数之后,所有后续参数都会被视为非选项。 这类似于非 GNU Unix 系统的运作方式。

使用示例:Python 使用getopt解析命令行参数-CJavaPy

2)getopt.gnu_getopt(args, shortopts, longopts=[])

此函数与 getopt() 类似,区别在于它默认使用 GNU 风格的扫描模式。 意味着选项和非选项参数可能会混在一起。 getopt() 函数将在遇到非选项参数时立即停止处理选项。

如果选项字符串的第一个字符为 '+',或者如果设置了环境变量 POSIXLY_CORRECT,则选项处理会在遇到非选项参数时立即停止。

 使用示例:Python 使用getopt解析命令行参数-CJavaPy

3)exception getopt.GetoptError

当参数列表中出现不可识别的选项或者当一个需要参数的选项未带参数时将引发此异常。 此异常的参数是一个指明错误原因的字符串。 对于长选项,将一个参数传给不需要参数的选项也将导致引发此异常。 msg 和 opt 属性会给出错误消息和关联的选项;如果没有关联到异常的特定选项,则 opt 将为空字符串。

exception getopt.error GetoptError的别名;用于向后兼容。

参考文档:getopt --- C 风格的命令行选项解析器 — Python 3.12.1 文档

2、 argparse 模块

可以使用更少的代码并附带更详细的帮助与错误消息生成等价的命令行接口,如下,

 使用示例:Python 使用getopt解析命令行参数-CJavaPy

参考文档argparse --- 命令行选项、参数和子命令解析器 — Python 3.12.1 文档

3、getopt 模块使用示例

getopt 模块使用完整示例,包括exception getopt.GetoptError的处理,日志的输出,参数获取判断,如下,

 使用示例:Python 使用getopt解析命令行参数-CJavaPy