简介
argparse是python标准库里面用于处理命令行参数的库。
命令行参数分为定位参数和选项参数:
- 定位参数就是程序根据该参数出现的位置来确定的。
- 选项参数是应用程序已经提前定义好的参数,不是随意指定的。
用法
主要有四个步骤:
- import argparse 首先导入模块
- parser = argparse.ArgumentParser() 创建一个解析对象
- parser.add_argument() 向该对象中添加命令行参数和选项
- args = parser.parse_args() 进行解析
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integer', type=int, help='display an integer')
args = parser.parse_args()
print(args.integer)
上述代码在终端运行,结果如下:
$ python argparse_usage.py
usage: argparse_usage.py [-h] integer
argparse_usage.py: error: too few arguments
$ python argparse_usage.py abcd
usage: argparse_usage.py [-h] integer
argparse_usage.py: error: argument integer: invalid int value: 'abcd'
$ python argparse_usage.py -h
usage: argparse_usage.py [-h] integer
positional arguments:
integer display an integer
optional arguments:
-h, --help show this help message and exit
$ python argparse_usage.py 10
10
定位参数
上面的示例,其实就是展示了定位参数的使用,再来看一个例子:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('square', help='display a square of a given number', type=int)
args = parser.parse_args()
print(args.square**2)
上述代码的运行结果为:
$ python argparse_usage.py 9
81
可选参数
现在看下可选参数的用法,所谓可选参数,也就是命令行参数是可选的,看下面例子:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--square', help = "display a square of a given number", type=int)
parser.add_argument('--cubic', help = 'display a cubic of a given number', type=int)
args = parser.parse_args()
if(args.square):
print(args.square**2)
if(args.cubic):
print(args.cubic**3)
输出结果:
$ python argparse_usage.py --h
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
optional arguments:
-h, --help show this help message and exit
--square SQUARE display a square of a given number
--cubic CUBIC display a cubic of a given number
$ python argparse_usage.py --square 8
64
$ python argparse_usage.py --cubic 8
512
$ python argparse_usage.py 8
usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
argparse_usage.py: error: unrecognized arguments: 8
$ python argparse_usage.py # 没有输出
混合使用
定位参数和选项参数可以混合使用,看下面一个例子,给一个整数序列,输出它们的和或者最大值(默认):
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
结果如下:
$ python argparse_usage.py
usage: argparse_usage.py [-h] [--sum] N [N ...]
argparse_usage.py: error: too few arguments
$ python argparse_usage.py 1 2 3 4
4
$ python argparse_usage.py 1 2 3 4 --sum
10
add_argument()方法
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
- name or flags - 选项字符串的名字或者列表,例如foo或者-f, --foo
- action - 命令行遇到参数时的动作,默认值是store
- store_const,表示赋值为const;
- append,将遇到的值存储为列表,也就是如果参数重复则会保存多个值;
- append_const,将参数规范中定义的一个值保存成一个列表
- count, 存储遇到的次数,此外,也可以继承argparse.Action自定义参数解析;
- dest,解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线
action参数详解
https://blog.youkuaiyun.com/drievn/article/details/70821188
Reference:
https://blog.youkuaiyun.com/yzxnuaa/article/details/79733047