python中argparse库的使用

1、简介

在python中,解析命令行参数的方法有很多种,比如sys的argv、getopt等。但比起它们,个人更偏爱argparse,因为它提供了一种更容易阅读、操作更简洁的方案。

2、基本使用

import argparse

parser = argparse.ArgumentParser()
'''parser.add_argument(...)→像这样设置一个参数,具体设置方法见下文'''
args = parser.parse_args()

上面这段代码便是argparse的基本用法,args中保存了所有的命令行参数

3、参数设置

参数可以分为定位参数和可选参数两种。

定位参数

默认是必需的,可以类比函数中不带默认值的参数,因此调用时按顺序读入的参数与设置好的定位参数一一对应,不需要添加“-”来指示参数名称。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("hello")
args = parser.parse_args()
arg1 = args.hello

像这样便定义了一个hello参数,解析后的参数存放在了args.hello里,这里赋给了arg1。

可选参数

顾名思义,可选参数不一定需要。类比函数中带默认值的参数,但这里的命令行可选参数的默认值是可以有可以没有的。
设置可选参数有两种方式:
1.短参数:用-加上一个字母来指定,如-e
2.长参数:用--加上一个字符串来指定,如--example
上述两种方式可以共存,即同一个参数既可以有短参数形式也可以有长参数形式。要注意的是,两种形式都有的情况下,参数对应变量名是长参数形式中的字符串。
此外,使用命令时可选参数(长or短)若没有对应参数值会报错,这时可以添加参数action="store_true"来让程序认为该参数已出现,从而避免无参数值报错。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-e", "--example")
args = parser.parse_args()
arg1 = args.example

4、默认值

给可选参数添加默认值可以使用add_argument函数的default参数:
在add_argument函数的参数中增加default="default_value"

5、类型转换type

argparse支持自动类型转换。通过argparse得到的命令行参数默认为str类型,可以在add_argument()函数中添加type=类型将参数自动转换为所需类型。例如,将上述example参数自动转换为int类型可以使用:
parser.add_argument("-e", "--example", type = int)

6、限定参数取值choices

有时候参数的取值选择是有限制的,比如设置参数core对应运行并行程序所用的核心数,那么在四核机器上core的取值就只能为1、2、3、4。可以使用add_argument()函数的choices参数来设置:
parser.add_argument("--core", choices = [1, 2, 3, 4])

7、设置帮助提示help

运行命令时使用-h参数可以查看关于该命令的帮助信息,如果想要在帮助信息中更为详细地描述某个参数,add_argument()函数的help参数便派上用场。使用方法如下:
parser.add_argument("--core", choices = [1, 2, 3, 4], help="choose the number of cores which will be used to run the proguam")

8、指令的帮助文档description

除了给单个参数设置详细说明,我们还可以在帮助信息中介绍该命令的功能。在argparse.ArgumentParser()函数中添加参数description="命令功能"即可,例如:

import argparse

parser = argparse.ArgumentParser(description="run a parallel program")
parser.add_argument("--core", choices = [1, 2, 3, 4], help="choose the number of cores which will be used to run the proguam")
args = parser.parse_args()
arg1 = args.core

9、互斥参数

有时我们需要两个不能同时出现的参数,比如以英尺为单位的长度参数inch和以厘米为单位的长度参数cm,这是我们可以使用互斥参数组来解决这问题。使用方法如下:

import argparse

parser = argparse.ArgumentParser(description="run a parallel program")
group = parser.add_mutually_exclusive_group()
group.add_argument("--inch", type = int, action="store_true")
group.add_argument("--cm", type = int, action="store_true")

parser.add_argument("--core", choices = [1, 2, 3, 4], help="choose the number of cores which will be used to run the proguam")
args = parser.parse_args()
arg1 = args.core

这样一来inch和cm两个参数便只能出现其中一个,若两者同时出现则会报错。

参考文章:《python argparse用法总结》

你可能感兴趣的:(python中argparse库的使用)