1-Python - argparse
about
argparse是Python标准库种推荐的命令行解析模块,用来在Python3种替代老旧的optparse模块。
install
pip install argparse
pip install argparse==1.4.0
pip install -i https://pypi.doubanio.com/simple argparse==1.4.0
usage
win10 + python3.6.6 + argparse1.4.0
首先,在D:\tmp
目录下有个test.py
文件,后续所有的代码示例都在这个文件中进行演示。
从命令行获取指定参数:
import argparse
parse = argparse.ArgumentParser(description="这是测试脚本") # description用来在命令行返回帮助信息
parse.add_argument(
'--user', # 通过 -- 设置参数
type=str, # 可选参数,限制该参数的类型 str、float、int、bool, 默认为 str
required=True, # 可选参数,是否必传,如果没有default的话不传报错,
default='张开', # 可选参数,默认值
choices=['张开', '张不开', '张小开'], # 可选参数,限制值的范围,
help="user argument help info", # 可选参数,返回该参数的帮助信息
)
print(parse.parse_args()) # 获取输入将被parse.parse_args接收
args = parse.parse_args()
print(args.user) # 直接可以点出来参数名获取输入值
"""
D:\tmp>python test.py --user 张开
Namespace(user='张开')
张开
"""
上例是一个简单的从终端设置user
参数,并且对该参数的一些限制设置。
注意,parse.add_argument
方法只能添加一个参数,并且为该参数添加限制设置。
想要在终端中添加多个参数怎么办?可以通过多次调用parse.add_argument
方法实现,如下示例:
import argparse
parse = argparse.ArgumentParser(description="这是测试脚本") # description用来在命令行返回帮助信息
parse.add_argument('--user', default='张开')
parse.add_argument('--pwd', default='666')
args = parse.parse_args()
print(args)
print(args.user)
print(args.pwd)
"""
D:\tmp>python test.py --user 张开 --pwd 666
Namespace(pwd='666', user='张开')
张开
666
"""
现在,还有些要补充的是,parse.add_argument
方法接收--
开头的参数,但也接收-
开头的参数。
一般有个默认成俗的规矩是--
开头的是设置参数的全名,而-
则是--
的缩写形式,例如--password
简写为-p
:
import argparse
parse = argparse.ArgumentParser(description="这是测试脚本") # description用来在命令行返回帮助信息
parse.add_argument('--user', default='张开')
parse.add_argument('-p', default='666')
args = parse.parse_args()
print(args)
print(args.user)
print(args.p)
"""
D:\tmp>python test.py --user 张开 -p 666
Namespace(p='666', user='张开')
张开
666
"""
有些时候,你可能需要对变量进行分组处理:
import argparse
parse = argparse.ArgumentParser(description="这是测试脚本") # description用来在命令行返回帮助信息
parse.add_argument_group(title='foo options')
parse.add_argument('--foo_user')
parse.add_argument('--foo_pwd')
parse.add_argument_group(title='bar options')
parse.add_argument('--bar_user')
parse.add_argument('--bar_pwd')
print(parse.parse_args())
args = parse.parse_args()
print(args.foo_user,args.foo_pwd)
"""
D:\tmp>python test.py --foo_user 张开 --foo_pwd 123 --bar_user 张不开 --bar_pwd 888
Namespace(bar_pwd='888', bar_user='张不开', foo_pwd='123', foo_user='张开')
张开 123
"""
接收列表形式的参数
import argparse
parse = argparse.ArgumentParser(description="这是测试脚本") # description用来在命令行返回帮助信息
# parse.add_argument('--l1', nargs='+', type=int, default=[1, 2, 3, 4])
# args = parse.parse_args()
# print(args.l1)
"""
(base) D:\tmp>python test.py --l1 20 21 23 24
[20, 21, 23, 24]
"""
# parse.add_argument('--l2', type=list, default=[1, 2, 3, 4])
# args = parse.parse_args()
# print(args.l2)
"""
(base) D:\tmp>python test.py --l2 20 21
[['2', '0'], ['2', '1']]
(base) D:\tmp>python test.py --l2 2021
[['2', '0', '2', '1']]
(base) D:\tmp>python test.py --l2 2021
['2', '0', '2', '1']
(base) D:\tmp>python test.py --l2 20 21
usage: test.py [-h] [--l1 L1 [L1 ...]] [--l2 L2]
test.py: error: unrecognized arguments: 21
(base) D:\tmp>python test.py --l2 20,21
['2', '0', ',', '2', '1']
"""
# parse.add_argument('--l3', nargs='+')
# args = parse.parse_args()
# print(args.l3)
"""
(base) D:\tmp>python test.py --l3 20,21 23 24
['20,21', '23', '24']
"""
# parse.add_argument('--l4', action='append')
# args = parse.parse_args()
# print(args.l4)
"""
(base) D:\tmp>python test.py --l4 20 --l4 21 --l4 22 --l4 23
['20', '21', '22', '23']
"""
that's all,see also: [argparse基本用法](https://blog.csdn.net/yy_diego/article/details/82851661) |