python之定义参数模块argparse的基本使用

Posted 水里的芋头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之定义参数模块argparse的基本使用相关的知识,希望对你有一定的参考价值。

在shell脚本中,若脚本带参数,则在脚本中使用$1、$2...等引用,

在python中,也可以定义类似的引用参数,可以为必选项也可以可选项。

 

基本用法如下三种:

1、必选项(位置参数)

import argparse

p = argparse.ArgumentParser()
p.add_argument(var‘,help=‘Required parameters‘)
args = p.parse_args()
if args.var:
    print(args.var)

若把此代码保存为arg.py,则执行的时候必须带一个参数,否则报错:

python arg.py hello,world

 

可以使用如下命令查看:

D:MyTestProjectMyLearn>python ArgParseLearn.py -h
usage: ArgParseLearn.py [-h] var

positional arguments:
  var         Required parameters

optional arguments:
  -h, --help  show this help message and exit

 

也可以把可选项设置为必选项,在add_argument中设置required为True就可以了,如下设置:

p.add_argument(-p,help=Optional parameters,required = True)

 

 

2、可选项一

import argparse

p = argparse.ArgumentParser()
p.add_argument(-p,help=Optional parameters)
args = p.parse_args()
if args.p:
    print(args.p)
else:
    print(no var)

 

若把此代码保存为arg.py,则执行的时候可带参数也可不带:

python arg.py

python arg.py hello,world

 

3、可选项二

import argparse

p = argparse.ArgumentParser()
p.add_argument(--parameter,help=Optional parameters)
args = p.parse_args()
if args.parameter:
    print(args.parameter)
else:
    print(no parameter)

若把此代码保存为arg.py,则执行的时候可带参数也可不带:

python arg.py

python arg.py hello,world

 

以上为3种入参方法,其实add_argument有很多参数可供选择:

name - 选项字符串的名字或者列表,例如var、-p等,可以使用-h查看到。

一般来说,单字母用-,多字母使用--,如果-p,-v,--version,--pass等,如果不使用-或者--,默认这个参数必须填写,类似加了required = True

action - 基本动作类型,当前默认有如下一些类型:

store  --这是默认类型,即存储值

store_const  ---保存const参数的值,此时执行文件只带参数,不带变量,如下:

import argparse

p = argparse.ArgumentParser()
p.add_argument(-p,help=Optional parameters,action = store_const,const = 78)
args = p.parse_args()
print(args.p)

如上代码保存为arg.py,应该这么执行:python arg.py -p

此时打印出来的值为const的值78

store_true和store_false  ---对应布尔值,True和False

append   ---此选项把参数对应的值使用list集合起来,如下:

import argparse

p = argparse.ArgumentParser()
p.add_argument(-p,help=Optional parameters,action = append)
args = p.parse_args()
print(args.p)

保存为arg.py,则可以如下执行:python arg.py -p 1 -p 2 -p 89

执行结果为[‘1‘, ‘2‘, ‘89‘]

append_const  ---这个必须有参数const,把const集合起来

count  ----查看参数出现几次

help  ---默认会自动存在的

version  ---必须配合version参数,用法如下:

import argparse

p = argparse.ArgumentParser()
p.add_argument(-v,help=Optional parameters,action = version,version = 1.15.1)
args = p.parse_args()
print(args.p)

保存为arg.py,执行python arg.py -v则显示version参数的值

 

nargs - 对应参数应该获取的变量个数,大于1个变量用list来表示。一般取值有如下几个:

N  数值int型,即nargs=3,nargs=10等

?  表示0个或者1个参数,如nargs = ‘?‘

*  表示0个或者多个参数,如nargs = ‘*‘
+  表示1个或者多个参数,如nargs = ‘+‘

const - 某些action和nargs选项要求的常数值。如果有这个参数,则使用脚本时不需要追加变量

default - 如果命令行中没有出现该参数时该参数的默认值。

type - 命令行参数应该被转换成的类型。支持以下类型:

str, int,float, and complex。如果没有此参数,默认为str类型

choices - 参数可允许的值的一个容器(列表)。

required - 该命令行选项是否可以省略(只针对可选参数)。

help - 参数的简短描述。

metavar - 参数在帮助信息中的名字,即类似起一个别名。如下:

import argparse

p = argparse.ArgumentParser()
p.add_argument(
p,help=Optional parameters,metavar = TP)
p.add_argument(‘--gogo‘,help=‘Optional parameters‘,nargs = 2,metavar = (‘new‘,‘old‘))
args = p.parse_args() print(args.p)

保存为arg.py后执行python arg.py -h,可以看到名称不是p,而是TP:

D:PycharmProjectsuntitledMyTestProjectMyLearn>python temp.py -h
usage: temp.py [-h] TP

positional arguments:
  TP          Optional parameters

optional arguments:
  -h, --help  show this help message and exit
 --gogo new old  Optional parameters

 

dest - 给parse_args()返回的对象要添加的属性名称。即给namespace里面的参数起个别名,作用同metavar(只有非位置参数才可以用dest),如下:

import argparse

p = argparse.ArgumentParser()
p.add_argument(‘-p,help=Optional parameters,metavar = TP,dest = paaa)
args = p.parse_args()
print(args)

保存为arg.py,然后执行python arg.py -h查看如下:

D:PycharmProjectsuntitledMyTestProjectMyLearn>python temp.py -h
usage: temp.py [-h] [-p TP]

optional arguments:
  -h, --help  show this help message and exit
  -p TP       Optional parameters

执行python arg.py -p yy,结果如下:

D:PycharmProjectsuntitledMyTestProjectMyLearn>python temp.py -p 5
Namespace(paaa=5)

 

 

对于ArgumentParser类中也有许多参数,查看__ini__如下:

    def __init__(self,
                 prog=None,
                 usage=None,
                 description=None,
                 epilog=None,
                 parents=[],
                 formatter_class=HelpFormatter,
                 prefix_chars=-,
                 fromfile_prefix_chars=None,
                 argument_default=None,
                 conflict_handler=error,
                 add_help=True,
                 allow_abbrev=True):

prog ---程序名称,默认为sys.argv[0]

usage ---程序使用方法介绍,放在帮助的最前面

description ---描述信息,在usage之后,参数之前

epilog ---帮助信息中参数之后的文本信息

parents ---ArgumentParser 对象的一个列表

formatter_class = HelpFormatter ---格式化的帮助信息,可以自定义

prefix_chars = ‘-‘  ----可选参数的前缀,默认是‘-‘

fromfile_prefix_chars = None  ---读取额外文件的字符集前缀,如下所示:

import argparse

p = argparse.ArgumentParser(fromfile_prefix_chars = @)
p.add_argument(-f)
args = p.parse_args()
print(args)
print(args.f)

保存为arg.py,在arg.py同目录下创建一个文件a.txt并输入一行:-f mylife

然后在命令行中执行python arg.py @a.txt,接入如下:

D:PycharmProjectsuntitledMyTestProjectMyLearn>python temp.py @a.txt
Namespace(f= mylife)
 mylife

 

argument_default = None ---参数的默认值,默认None

conflict_handler  ---解决参数冲突

add_help = True  ---默认增加-h/--help给解释器,若为False则不会自动添加-h/--help选项

allow_abbrev = True ---允许参数简写

 

以上是关于python之定义参数模块argparse的基本使用的主要内容,如果未能解决你的问题,请参考以下文章

Python命令行参数处理之argparse模块

Python模块之argparse

python 笔记:argparse

python3中argparse模块

Python3中使用argparse模块解析命令行参数

Python3中使用argparse模块解析命令行参数