argparse
模块是 Python
标准库中推荐的命令行解析模块。用来写命令行脚本十分好用。
命令行分三种情况:
- 参数
- 短选项,分无参和有参数
- 长选项,分无参和有参数
我们就通过以上情况来分别介绍(多看代码和注释)。
导入以及使用模板
# 导入
import argparse
# 获取实例
parser = argparse.ArgumentParser()
# 解析命令行参数
parser.parse_args()
输出结果:
python3 argparse_example.py -h
usage: argparse_example.py [-h]
optional arguments:
-h, --help show this help message and exit
argparse
默认有一个帮助选项,用于说明如何使用该命令。
参数
获取一个或者多个参数
# 导入
import argparse
# 设置命令行的描述信息
parser = argparse.ArgumentParser(description='argparse demo')
# 设置一个参数,narges 默认是1,可以不写,type可以是int,str,float等等
parser.add_argument('arg1', nargs=1, help='set arg1', type=int)
# 设置多个参数
parser.add_argument('argn', nargs='*', help='set argn')
# 解析命令行参数
args = parser.parse_args()
# 获取参数
print(args.arg1)
print(args.argn)
输出结果:
python3 argparse_example.py 123 abc def
[123]
['abc', 'def']
注意获取的参数是一个列表。
帮助信息:
python3 argparse_example.py -h
usage: argparse_example.py [-h] arg1 [argn [argn ...]]
argparse demo
positional arguments:
arg1 set arg1
argn set argn
optional arguments:
-h, --help show this help message and exit
短选项
不带参数
# 导入
import argparse
# 获取示例
parser = argparse.ArgumentParser(description='argparse demo')
# 设置短选项,store_true表示如果指定-v选项,则把TRUE分配给返回值
parser.add_argument('-v', help='increase output verbosity', action='store_true')
# 解析命令行参数
args = parser.parse_args()
if args.v:
print('verbosity turned on')
else:
print('verbosity turned off')
输出:
python3 argparse_example.py -v
verbosity turned on
python3 argparse_example.py
verbosity turned off
帮助信息:
python3 argparse_example.py -h
usage: argparse_example.py [-h] [-v]
argparse demo
optional arguments:
-h, --help show this help message and exit
-v increase output verbosity
这里
-v
短选项是可选的,如果要设置成必选,可以在add_argument
函数里加参数required=True
。
带参数
# 导入
import argparse
# 获取示例
parser = argparse.ArgumentParser(description='argparse demo')
# 设置短选项,并设置参数名
# 我将短选项改成了必须,注意!
parser.add_argument('-v', help='increase output verbosity',
metavar='verbosity', required=True)
# 解析命令行参数
args = parser.parse_args()
print(args.v)
输出结果:
python3 argparse_example.py -v abc
abc
python3 argparse_example.py -v
usage: argparse_example.py [-h] -v verbosity
argparse_example.py: error: argument -v: expected one argument
帮助信息:
python3 argparse_example.py -h
usage: argparse_example.py [-h] -v verbosity
argparse demo
optional arguments:
-h, --help show this help message and exit
-v verbosity increase output verbosity
如果选项需要n个参数,同样可以设置
narges
。
长选项
长选项和短选项使用完全相同,将 -v
改成 --Verbosity
即可。
如果短选项和长选项需要同时支持,比如帮助信息里的 -h
和 --help
,总不能都各写一遍吧。其实可以同时申明:
# 导入
import argparse
# 获取示例
parser = argparse.ArgumentParser(description='argparse demo')
# 同时设置短选项和长选项
parser.add_argument('-v', '--Verbosity', help='increase output verbosity',
required=True, action='store_true')
# 解析命令行参数
args = parser.parse_args()
print(args.v)
这里我设置的是无参数情况,有参数情况参考上述。
帮助信息:
python3 argparse_example.py -h
usage: argparse_example.py [-h] -v
argparse demo
optional arguments:
-h, --help show this help message and exit
-v, --Verbosity increase output verbosity
后记
argparse
还有很多其他用法,请参考 官方教程 。
网友评论