首页 > temp > python入门教程 >
-
python命令行传参详解,optparse模块OptionParse类的学习
官网链接:https://docs.python.org/3/library/optparse.html
https://docs.python.org/2/library/argparse.html
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,type(options),args,type(args)) #print(type([])) 结果:<class 'list'>
options,是个类,dest是键值对里的键,值是None,args是列表,空
没传参的时候
-f 空格指定字符串,会将它作为dest里filename的值,
我再加一个短横线,结果还是可以的 --f
使用--file 也可以
其它字符串,不在--file后的那个,无论在它前面还是后面,都加进了args列表里。
临时给程序加个-m
也是可以用的
后面再用这个的,被覆盖掉了
代码现在如下,调用它的值
调用它的值,点来调用
1
2
3
4
5
6
7
8
9
|
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() with open( '%s' %options.filename,mode= 'w' ,encoding= 'utf-8' ) as f: f.write( '我是小马过河' ) if "mcw" in args: print( '欢迎mcw' ,args) |
这样就可以指定文件做操作,传参中有啥参数也可以做对应参数了。
-h或者--help可以查看帮助信息,指定参数的介绍信息
添加-q参数,多了一组键值对,命令行加上-q值是假,不加也就是默认是真。(自解:可用于某个功能或其它是否开启或其他并给出默认状态)
官网介绍
<yourscript> --file=outfile -q
因此,以下命令行都等效于上面的示例:
<yourscript> -f outfile --quiet
<yourscript> --quiet --file outfile
<yourscript> -q -foutfile
<yourscript> -qfoutfile
最常见的选项操作是store
,它告诉optparse
采用下一个参数(或当前参数的其余部分),确保它的类型正确,并将其存储到您选择的目的地。
例如:
parser.add_option("-f", "--file",
action="store", type="string", dest="filename")
模拟传参,假的传参,结果一样
终端上效果一致的传参,不用创建列表,将列表传进去,貌似argv[1:]的参数就是一个列表,默认传递到parse_args方法中,遇到定义的-f之类的,就会将后面那个值存到dest中,作为定义的dest的值,而其它没用add_option的就传到args列表中
不加类型,传递的是字符串。action默认是store,可以不填
要想传递进去是个数字,就要加类型的参数是int
还可以拼接在一起传参
之前的也可以简写:也可以拼在一起传参
选项参数是42 选项卡是-n 这一次,我们将选项参数与选项卡在一起:因为-n42
(一个参数)等价于 (两个参数),代码-n 42 传递进的是
["-n42"]
-q没有默认值,不传参就是None,传了参数就是false
可以引号引起来当成一个
选项卡刚刚试了试可以是传字母数字字符串,但是-只能加一个字符串,;要想用多个字符串,必须用--添加长字符串
定义帮助信息中%default会使用默认的值,%prog代表脚本名字,定义了Usage消息
至此,命令行传参大部分场景可以使用了,其它功能有时间再补充