汽车网站建设论文,关于网站建设心得体会,app界面设计网站,网站做302重定向最近遇到一个问题#xff0c;是指定参数来运行某个特定的进程#xff0c;这很类似Linux中一些命令的参数了#xff0c;比如ls -a#xff0c;为什么加上-a选项会响应。optparse模块实现的也是类似的功能#xff0c;它是为脚本传递命令参数。
使用此模块前#xff0c;首先需…最近遇到一个问题是指定参数来运行某个特定的进程这很类似Linux中一些命令的参数了比如ls -a为什么加上-a选项会响应。optparse模块实现的也是类似的功能它是为脚本传递命令参数。
使用此模块前首先需要导入模块中的类OptionParser然后创建它的一个实例对象
复制代码 代码如下:
from optparse import OptionParser
parser OptionParser() #这里也可以定义类的参数后续有
接着就可以添加选项了基本语法
复制代码 代码如下:
parser.add_option(opt_str, ...,
attrvalue, ...)
每个opt_str可以有多个选项字符串比如-f 和--file(就行Linux命令行中ls -a和ls --all效果一样)只要定义了这些选项则在命令行输入的时候这些选项就会被识别否则报错。opt_str的定义可以如下
复制代码 代码如下:
parser.add_option(-f, --file, ...) #-f 和 --file 是作为调用时的参数的标签会被识别
当选项被定义好后则可以调用parse_args()函数来获取我们定义的选项和参数
复制代码 代码如下:
(options, args) parser.parse_args() #parse_args可以有参数不定义的话使用默认的sys.argv[1:]
parse_args()返回两个值一个是选项options如-f另一个是参数args,即除选项options以外的值如test.txt
add_option中最重要的四个option的属性是action,type,dest(destination),help。这四个中action又是最基础的。
action参数附带介绍了type、dest
action参数告诉optparse该做什么当它在命令行中遇到选项时。action有三种存储方式store、store_false、store_true。如果不指定action的值默认的是store它告诉optparse将继续读取下一个参数(type)保证类型的正确性并将它将值存储在一个变量dest中即将命令行中输入的字符串将它存为options的属性这样可以直接调用。啰嗦了一大堆我自己都被搞晕了~~~~先看个例子吧
复制代码 代码如下:parser.add_option(-f, --file,actionstore, typestring, destfilename)Option at 0x2d72f48: -f/--fileargs [-f, foo.txt] #这个是模拟命令行的输入(options, args) parser.parse_args(args)options.filename
foo.txt
上述当optparse看到选项-f时它将继续读下一个参数是foo.txt并将它存储在options.filename这个filename就是add_option中的dest之后dest的值将作为parser的属性被存储。所以当调用parse_args函数时options.filename的值就是foo.txt。这个是以“string”类型存储的当然type也可以是int和float等比如下面的
复制代码 代码如下:
parser.add_option(-n, typeint, destnum)
注意这个没有指定一个长字符串的选项如--number这当然是可以的,不过命令行输入时选项就只能是-n了也没有指定action使用默认的“store”。再次使用模拟的命令行参数[-n22](一个参数)也可以写成[-n 22](作为两个参数来传递):
复制代码 代码如下:parser.add_option(-n, typeint, destnum)Option at 0x2d71308: -n(options, args) parser.parse_args([-n22])print options .num
22
如果不指定type参数默认的是string类型所以一个最简单的方式可以写成这样
复制代码 代码如下:
parser.add_option(-f, destfilename)
action另两种值分别是“store_true”和“store_false”这一般作为一个标记使用例如开始运行一个程序时将flag设为True退出时将flag设为False。看了下面的例子就全明白了当选项遇到v时它将options.verbose设为True,当选项遇到q时它将options.verbose设为False:
复制代码 代码如下:from optparse import OptionParserparserOptionParser()parser.add_option(-v, actionstore_true, destverbose)Option at 0x2ceb888: -vparser.add_option(-q, actionstore_false, destverbose)Option at 0x2d68e48: -qfakeArgs [-v,hello]options, args parser.parse_args(fakeArgs)options.verbose
TruefakeArgs [-q,bye bye]options, args parser.parse_args(fakeArgs)options.verbose
False
#如果同时写两个选项v和q它会以哪个为准呢我试了一下是以最后出现的为准呵呵~~fakeArgs [-q,bye bye,-v,hello]options, args parser.parse_args(fakeArgs)options .verbose
True
Default参数
default参数很好理解了即当没有指定dest的值时给出个默认值如下
复制代码 代码如下:parser.add_option(-x, actionstore, destverbose, defaulthahaha)Option at 0x2d77148: -xoptions, args parser.parse_args() #这里没有传参数options.verbose
hahaha
如果这样的话那下面这两句的效果就一样了前提是不给parse_args()函数传参
复制代码 代码如下:
parser.add_option(-v, actionstore_true, destverbose)
parser.add_option(-q, actionstore_false, destverbose, defaultTrue)
help参数
这个参数是为了让我们定义的“命令”更为逼真还提供了帮助消息了呢呵呵~~简单用法如下
复制代码 代码如下:from optparse import OptionParserusage myprog[ -f ][-s ] arg1[,arg2..]parserOptionParser(usage) #这里为类添加了参数usageoptParser.add_option(-f,--file,action store,typestring,dest fileName,helpno any help)Option at 0x2bdb888: -f/--filefakeArgs [-f,file.txt]options, args parser.parse_args(fakeArgs)options.fileName
file.txtparser.print_help()
Usage: myprog[ -f ][-s ] arg1[,arg2..]
Options:
-h, --help show this help message and exit #此两行根据option自动生成比较智能额~~
-f FILENAME, --fileFILENAME
no any help #这是我定义的帮助信息(呵呵不太友好~~)parser.print_usage()
Usage: myprog[ -f ][-s ] arg1[,arg2..] #这是类的usage信息~~很逼真有木有上述是介绍基本的语法下面举两个例子一个是网上找的一个模拟命令行的参数的例子另一个是“真实”的例子~~~
Example1:
复制代码 代码如下:
from optparse import OptionParser
usage myprog[ -f ][-s ] arg1[,arg2..]
optParser OptionParser(usage)
optParser.add_option(-f,--file,action store,typestring,dest fileName)
ooptParser.add_option(-v,--vison, actionstore_false, destverbose,defaultNone,
helpmake lots of noise [default])
fakeArgs [-f,file.txt,-v,good luck to you, arg2, arge]
options, args optParser.parse_args(fakeArgs)
print options.fileName
print options.verbose
print options
print args
print optParser.print_help()
运行结果是
复制代码 代码如下:
file.txt
False
{verbose: False, fileName: file.txt}
[this is some what, arg2, arge]
Usage: myprog[ -f ][-s ] arg1[,arg2..]
Options:
-h, --help show this help message and exit
-f FILENAME, --fileFILENAME
-v, --vison make lots of noise [default]
Example2:
一个简单的例子就是将给脚本传选项n时则输出的是n的参数的值否则给出默认值脚本保存在E盘
复制代码 代码如下:
from optparse import OptionParser
optParser OptionParser()
optParser.add_option(-n,--number,action store,typeint,dest intNumber)
optParser.add_option(-v,--version, actionstore_false, destverbose,defaultgggggggg,helpno help)
options, args optParser.parse_args()
if options.intNumber is not None: #当有选项n时则使用给出的参数值
#num options.intNumber
print options.intNumber,options.verbose
else:
for i in range(1,5): #不给选项n的情况下默认输出的是14
#num i
print i
打开cmd运行如下