这个模块时用来在命令行模式下运行Python脚本,使能够传入参数,直接看个例子:
就是比通过的命令行运行多了杠杠啥,杠啥。
Python test_duye.py --vIDeo body.MP4 --image a.png --relative --adapt_scale
2、基本用法# -*- Coding: utf-8 -*-import argparseimport datetimedef get_parser(): # 生成argparse对象 parser = argparse.ArgumentParser(description="帮助信息-->我的公众号名字是:杜唯西") # 添加需要的参数 parser.add_argument('--start_dt', type=str, default=datetime.datetime.Now().strftime("%Y-%m-%d")) parser.add_argument('--end_dt', type=str, required=True, default=datetime.datetime.Now().strftime("%Y-%m-%d")) parser.add_argument('-n', required=True, choices=['du', 'vc']) # 返回parser对象 return parser if __name__ == '__main__': parser = get_parser() # 拿到argparse对象 print('-----1------') print(parser) print(type(parser)) args = parser.parse_args() # 拿到argparse对象的参数 print('-----2------') print(args) print(type(args)) start_dt = args.start_dt # 打印参数 end_dt = args.end_dt n = args.n print('-----3------') print(start_dt) print(end_dt) print(n)
执行:python parser_test.py --start_dt '2020-03-04' --end_dt '2020-03-05' -n du
输出:
-----1------ArgumentParser(prog='parser_test.py', usage=None, description='帮助信息-->我的公众号名字是:杜唯西', formatter_class=<class 'argparse.Helpformatter'>, conflict_handler='error', add_help=True)<class 'argparse.ArgumentParser'>-----2------namespace(end_dt='2020-03-05', n='du', start_dt='2020-03-04')<class 'argparse.namespace'>-----3------2020-03-042020-03-05du
大概看下:
函数里分为包括:生成parser对象、给parser对象添加参数、返回parser对象。
生成对象时候的description参数用来显示帮助信息,在输出里可以看到。
add_argument方法用来添加参数信息:
1)'--start_dt'
:参数名字为start_dt
;
2)type
:程序中需要的类型,比如设置type=int
或type=bool
。这样就省的类型转化了;
3)required
如果为true:运行python时候不带上这个参数的设置就会报错;
4)default
:没传入参数时候的默认值;
到此处位置,提到到带不带参数指的是:参数名和参数值一起,即
--start_dt '2020-03-04'
要一起。
5)choice
:参数值只能从几个选项里面选择;
6)help
:当使用—help或者-h查看帮助信息的时候,显示出来;看个效果:
先注释掉一些代码:
if __name__ == '__main__': parser = get_parser() # 拿到argparse对象 # print('-----1------') # print(parser) # print(type(parser)) args = parser.parse_args() # 拿到argparse对象的参数 print('-----2------') print(args) print(type(args)) start_dt = args.start_dt # 打印参数 end_dt = args.end_dt n = args.nss print('-----3------') print(start_dt) print(end_dt) print(n)
执行: python parser_test.py --help
输出:
usage: parser_test.py [-h] [--start_dt START_DT] --end_dt END_DT -nss {du,vc}帮助信息-->我的公众号名字是:杜唯西optional arguments: -h, --help show this help message and exit --start_dt START_DT 开始时间 --end_dt END_DT -n {du,vc} 选择我的名字
7)dest
:写这个是用在代码里的,比如用的长名字,方便读懂代码。
而外部传的参数名字还是这个玩意:'--start_dt'
:参数名字为start_dt
;外部参数可以简单点,比如—s,更容易使用。
8)action
:用法就是:
parser.add_argument('--age', action="store_true")
执行:python parser_test.py --age
注意到没,参数后边没跟具体的值,因为上边action="store_true"
表示,只要--age
出现,那他就是true;要是不出现就是false。也就是说是布尔值。
注意和default区分。这俩个参数也迷惑了我一会。
后记:
PS:不知各位发现没有,end_dt既有require为true,又有default,default之间进冷宫了,不会发挥作用。
PS2:我在实验的时候还发现一个有意思的:
执行:python parser_test.py --st '4' --end '5' -n du
只要参数的前几个字母能对的上,也是成功输出的。
end.
总结
以上是内存溢出为你收集整理的python argparse基本用法总结全部内容,希望文章能够帮你解决python argparse基本用法总结所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)