概述
optparse模块学习
在python中有两类处理命令行的方式:
- 使用sys.argv(此种方式适用于使用命令行运行python代码时,解析命令行参数)
- 另一种方法是使用python代码处理(额外添加参数等,此种方法主要用到两个模块getopt、optparse)
OptionParser类中底层使用的是sys.argv读取参数。OptionParser是对argv的高度封装,用来处理参数。在OptionParser中有如下代码:(可看出使用的是argv)
optparse是一种类似于dos命令行的一种设计模块,例如:dos命令中添加-f会触发一种事件。
使用步骤
创建parser实例
每个parser实例代表一类命令实例。 例如-f是文件命令中的一个option,它属于文件parser对象;-zxvf是压缩解压命令中的一个option,它属于压缩解压parser对象。
from optparser import OptionParser
parser = OptionParser()
添加选项
例如:-f就是一个选项,选项具有简写与全名。
parser.add_option("-f", "--fil")
#-f是简写,--fil是全名;本质上两者使用时是等价的,但全名只有--fil。两者在命令行中使用时会被识别。
(option, params) = parser.parser_args()
print(option)
print(params)
例如dos命令(我的代码写在test2.py中):
(pytorch01) D:编程项目Pythonsvm_study>python test2.py -f 2
{'fil': '2'}
[]
(pytorch01) D:编程项目Pythonsvm_study>python test2.py 1 2 3 4
{'fil': None}
['1', '2', '3', '4']
(pytorch01) D:编程项目Pythonsvm_study>python test2.py -f 1 2 3 4
{'fil': '1'}
['2', '3', '4']
(pytorch01) D:编程项目Pythonsvm_study>python test2.py 1 -f 2 3 4
{'fil': '2'}
['1', '3', '4']
(pytorch01) D:编程项目Pythonsvm_study>python test2.py 1 -f 2 3 x=4
{'fil': '2'}
['1', '3', 'x=4']
从上例可以看出:parser_args()会返回一个字典(选项字典,命令行中选项后面跟着的就是选项值)与一个参数列表(除了选项后跟着的参数外都是参数列表中的参数)。parse_args可以有参数(使用参数后就按照参数来进行解析,参数格式["-f", “12”, “aa”]过["-f12", “aa”]),不定义的话使用默认的sys.argv[1:]
parser.add_option("-f", "--file", action="store", type="string", dest="filename")
(options, args) = parser.parse_args(["-f", "12"])
#与["-f12"]等价
print(options)
print(options.filename, type(options.filename))
print(args)
(pytorch01) D:编程项目Pythonsvm_study>python test2.py -f 1 2 3
{'filename': '12'}
12 <class 'str'>
[]
添加选项函数有四个参数:
add_option的参数
看下述一段代码中:
parser.add_option("-f", "--file", action="store", type="string", dest="filename")
(options, args) = parser.parse_args()
print(options)
print(options.filename, type(options.filename))
print(args)
(pytorch01) D:编程项目Pythonsvm_study>python test2.py -f 1 2 3
{'filename': '1'}
1 <class 'str'>
['2', '3']
可以看见,dest将全名file覆盖了,所以options字典中的键为filename。type定义了选项值的类型(默认为string)。action就是告诉optparse遇到参数应该按照add_option时定义的来使用(action默认为store)。
action:
- 为store时:告诉optparse按照add_option时定义的那样解析。
- 为store_true时:option后面有参数那么选项值为True。
- 为store_false时:option后面有参数那么选项值为False。
type: 指定选项值的类型。
dest: 指定选项名(也就是options字典中的键值)
default: 当没有参数时默认给选项字典赋值。
parser.add_option("-f", "--file", action="store", type="string", dest="filename", default="hahaha")
(options, args) = parser.parse_args()
print(options)
print(options.filename, type(options.filename))
print(args)
(pytorch01) D:编程项目Pythonsvm_study>python test2.py
{'filename': 'hahaha'}
hahaha <class 'str'>
[]
help: 帮助信息提示。添加了usage信息的。
USAGE = "one two three"
parser = OptionParser(USAGE)
parser.add_option("-f", "--file", action="store", type="string", dest="filename", default="hahaha", help="no help")
parser.print_usage()
parser.print_help()
(pytorch01) D:编程项目Pythonsvm_study>python test2.py -f 1 2 3
Usage: one two three
Usage: one two three
Options:
-h, --help show this help message and exit
-f FILENAME, --file=FILENAME
no help
option:中-h和-f开头的那两段是自动生成的。
最后
以上就是漂亮花瓣为你收集整理的optparse模块学习optparse模块学习的全部内容,希望文章能够帮你解决optparse模块学习optparse模块学习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复