🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[toc] ## 前言说明 要自己定制程序的参数选项控制, 可以使用 Python 自带的 OptParse 模块。 ~~~ import optparse ~~~ > 也可以直接解析 sys.argv 里的参数,但是过于麻烦。 `optparse` 现在不再更新了,它有一个缺陷是如果不输入参数就不校验,所以推荐更新版本 `argparse`. ### 说明 OptParse 支持一般性 GNU 的选项方法,包括: * 无参选项, `-v` * 有参选项, `-p value, –para=value` * 值参一体, `-pvalue` (不支持长参数) * 合并选项, `-abc, -abcp value` (最后一个可以是有参, 其余均无参) 解析时,`-` 和 `--` 的区别: * `-` 就看后面的值, 要是无参的, 那继续读下一个; 要是有参的,就把参数读进来(分隔或一体). * `--` 直接读后面的值; ### 简单例子: **代码** ~~~ from optparse import OptionParser parser = OptionParser() parser.add_option("-f", "--file", dest="filename", help = "write report to FILE", metavar = "FILE") parser.add_option("-q", "--quiet",action = "store_false", dest = "verbose", default = True, help = "don't print status messages to stdout") options, args = parser.parse_args() print(options) print(args) ~~~ **生成的使用和帮助信息:** ``` D:\data\my_python\常用模块>test.py -h Usage: test.py [options] Options: -h, --help show this help message and exit -f FILE, --file=FILE write report to FILE -q, --quiet don't print status messages to stdout ``` ## **具体用法:** ### 一: 创建Optionparser实例 ``` from optparse import OptionParser parser= OptionParser() ``` ### 二:命令行选项 ``` parser.add_option("-f", "--file", dest="filename", help = "write report to FILE", metavar = "FILE") #每个选项也可以有一个短选项和一个长选项,例如-q,--quite ``` 选项操作: 1. action: 指定Optionparser解析到一个命令行参数时该如何处理.action有一组固定值可选. | action的值 | 功能 | | --- | --- | | store | 默认,表示将命令行参数值保存在options对象里. | | store_false| 布尔选项,如果出现了对应的选项,例如-q,则赋值False. | | store_true| 布尔选项,赋值True | | store_const| 存储恒定值 | | callback| :调用指定的函数| | count| 将计数器递增1 | | append| 将此选项的参数附加到列表 | 2. dest: 可以决定解析后,取值时的属性名, 不指定时就是选项不加-的字符串. 3. type: 参数的类型,默认”string”,可以为”int”,“float” 4. default: 缺省值. 没有设置缺省值的为None. 5.help: 选项中有 -h 时打印的 help 信息. 6. metavar: 表示显示到 help 中选项的默认值; ### 三:解析参数 使用`options, args = parser.parse_args() `解析参数 **案例:** ``` from optparse import OptionParser parser = OptionParser() parser.add_option("-f", "--file", dest="filename", help = "write report to FILE", metavar = "FILE") options, args = parser.parse_args() print(options) print(args) # options,一个包含所有选项的值的对象. # args,解析选项后剩余的位置参数列表. #执行结果 >test.py -f aa.txt {'filename': 'aa.txt'} [] >test.py -f aa.txt cc dd {'filename': 'aa.txt'} ['cc', 'dd'] ``` ### 四: optparse处理错误 错误分为程序错误,用户错误和程序定义的错误 * 程序错误: 通常是对OptionParser.add_option()的错误调用.例如:无效的选项字符串,未知的选项属性,缺少选项属性等. 这些通常会引发异常,触发optparse.OptionError或者TypeError,并导致程序崩溃. * 用户错误: Optparse可以自动检测一些常见的用户错误,例如输入了错误的参数类型,参数输入缺漏. * 程序定义的错误 可以调用Optionparser.error()来通知应用程序定义的错误条件. 案例: 定义了一个-t参数,只能输入整数,当输入错误的选项和不输入选项是,都会有提示: ~~~ from optparse import OptionParser parser = OptionParser() parser.add_option('-t',dest='time', type='int',help='只能输入整数') options, args = parser.parse_args() #执行结果 >test.py -t #选项未输入 Usage: test.py [options] test.py: error: -t option requires 1 argument >test.py -t 1.1 #选项值错误 Usage: test.py [options] test.py: error: option -t: invalid integer value: '1.1' ~~~