python--argparse命令行解析工具的用法

agrparse是python官方库汇中的一个命令行解析工具,主要作用是接收命令行中的参数,同时还有给出代码的usage功能。

就像在命令行终端中输入:

>> python main.py --help 它会给出代码参数的说明。

>> python main.py --num 10 --name Tom 这是给代码传入num和name参数。

1、基本用法

首先直接导入包、接受参数,其他什么也不做。

代码:

1
2
3
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

运行结果:

python--argparse库/1.jpg

结果分析:

可以看出-h和–help能显示出代码的usage,但是上面代码中没有加任何usage,所以不会显示。

2、添加位置参数(positional arguments)

给代码传入参数。

1
2
3
4
5
6
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('num') # 接收参数
args = parser.parse_args()

print(type(args.num),args.num)

运行结果:

python--argparse库/2.png

结果分析:

代码第三行,利用add_argument接受一个参数,并把参数赋值给num变量。

从运行结果中可以看出接收到的参数都保存为str类型

程序加上-h获取usage时可以看出代码的用法usage: learn.py [-h] num ,表示可以接受一个num参数。

num参数默认必选,如果不加参数会报错。

3、添加可选参数(optional arguments)

有两种方式添加,- 指定短参数,如-h-- 指定长参数,如--help

这两种方式可以同时存在,也可以只存在一个。

首先给出一个接收指定名字参数的例子:

1
2
3
4
5
6
7
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-n", "--number", help="input a number to precess")
args = parser.parse_args()

print(args.number)

运行结果:

python--argparse库/3.jpg

结果分析:

第三行代码表示通过-n--number 来添加一个参数,这个参数保存在number 变量中,后面的帮助信息利用-h 或传参错误是或显示给使用者。

-n--number 指定的是同一个参数,这个参数保存在args.number 中,而不是args.n 中。

4、指定参数的数据类型

默认的参数类型为str,如果需要进行数据运算还需要再进行转换。argparser提供了对参数数据类型的限制和解析,如果输入的参数不类型不符合,则直接报错。

如下面是计算输入参数的平方的例子:

1
2
3
4
5
6
7
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-n", "--number", type=int, help="input a number to process")
args = parser.parse_args()

print(args.number**2)

运行结果:

python--argparse库/4.jpg

5、参数默认值

可以通过default来指定参数的默认值,当没有输入参数的时候,参数值就为default指定的值。

1
2
3
4
5
6
7
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-n", "--number", type=int, default=15, help="input a number to process")
args = parser.parse_args()

print(args.number**2)

运行结果:

python--argparse库/5.jpg

6、限定参数的输入范围

可以利用choices=[] 来指定输入参数可选值。

1
2
3
4
5
6
7
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-n", "--number", type=int, choices=[11,12,13])
args = parser.parse_args()

print(args.number**2)

运行结果:

python--argparse库/6.jpg

当输入的参数不在choice指定的数中时会报错。

7、添加程序使用说明

可以通过argparse.ArgumentParser(description="calculate X to the power of Y") 来给整个程序定义说明文档。

同时可以通过parser.add_argument()中help参数来给每个变量添加说明。

1
2
3
4
5
6
7
8
9
10
import argparse

parser = argparse.ArgumentParser(description='Test,calculate the square of a number')
parser.add_argument("-n", "--number", type=int, choices=[11,12,13], help='input a num from [11,12,13]')
parser.add_argument("-m", type=str,help='input your name')

args = parser.parse_args()

print(args.number**2)
print(args.m)

运行结果:

python--argparse库/7.jpg


参考链接:

https://www.jianshu.com/p/fef2d215b91d

https://www.jb51.net/article/82746.htm