add_argument函数action参数总结

2020年1月1日 / 950次阅读 / Last Modified 2020年1月1日
argparse模块

灵活设置命令行参数的行为方式,可以给程序设计带来很大的便利,毕竟输入和输出也是很重要的两个部分。我们用python的argparse模块制作命令行程序,用argparse.ArgumentParser对象的add_argument函数增加命令行参数,而action用来控制命令行参数的(部分)行为方式。

默认action='store'

默认情况下,action='store',可以不用写出来,含义是保存输入的值。如果require!=True,不输出此命令含参数,值为None:

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--moren')
args = parser.parse_args()
print(args.moren)
$ python3 arg_action.py 
None
$ python3 arg_action.py --moren www.pynote.net
www.pynote.net

这就是action取默认值的效果。

action='store_true' or action='store_false'

store_true表示如果配置,值为True,store_false表示如果配置,值为False。这两个action也很常用,此时命令行参数后面不能配置具体的值。

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--zhenjia', action='store_true')
args = parser.parse_args()
print(args.zhenjia)
$ python3 arg_action.py --zhenjia
True

上面测试action=‘store_true’,下面测试action='store_false':

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--zhenjia', action='store_false')
args = parser.parse_args()
print(args.zhenjia)
$ python3 arg_action.py --zhenjia
False

action='store_const'

当命令行参数的action='store_const'时,如果配置,它的值为add_argument函数的const参数提供。用const参数来提供某个命令行参数的默认值:

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--const', action='store_const', const=123)
args = parser.parse_args()
print(args.const)
$ python3 arg_action.py --const
123

action='append'

将命令行参数值放入list对象中,并且,允许命令行参数多次出现nargs参数实现一个命令行参数出现多个值,但是不允许同一个命令行参数多次出现)。

$ cat arg_action.py
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tolist', action='append')
args = parser.parse_args()
print(args.tolist)
$ python3 arg_action.py --tolist 1 --tolist 2 --tolist 3
['1', '2', '3']

如果在配合上nargs='+'参数,效果如下:

$ cat arg_action.py
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--tolist', action='append', nargs='+')
args = parser.parse_args()
print(args.tolist)
$ python3 arg_action.py --tolist 1 2 --tolist 3 4 5 --tolist 6 7
[['1', '2'], ['3', '4', '5'], ['6', '7']]

出现了嵌套多个list的效果。

action='append_const'

待续...

action='count'

这个action用来统计命令行参数出现的次数,出现次数不同,含义也不一样:

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-c', '--cc', action='count')
args = parser.parse_args()
print(args.cc)
xinlin@ubuntu:~/test$ python3 arg_action.py -c
1
xinlin@ubuntu:~/test$ python3 arg_action.py -ccccc
5
xinlin@ubuntu:~/test$ python3 arg_action.py --cc --cc --cc
3

action='help'

这个action对应 -h 参数,-h 参数是默认提供的。

action='version'

用来支持显示version信息的动作,用法如下:

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-c', '--cc', action='count')
parser.add_argument('-V', action='version', version='pynote.net V1.2345')
args = parser.parse_args()
print(args.cc)
$ python3 arg_action.py -V
pynote.net V1.2345

action='extend' (python-3.8)

前面介绍的action='append'时,多次出现的同一个命令行参数,参数值保存成了嵌套list的形式。action='extend'优化了此问题,让多个list以extend的方式合并成一个list。

$ cat arg_action.py 
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--onelist', action='extend', nargs='+')
parser.add_argument('-V', action='version', version='pynote.net V1.2345')
args = parser.parse_args()
print(args.onelist)
$ python3 arg_action.py --onelist 1 2 3 --onelist 4 5 6
['1', '2', '3', '4', '5', '6']

还可以通过继承argparse.Action类的方式,实现自定义action,这个比较高级,等我自己有需要的时候,再研究一下如何使用吧。

-- EOF --

本文链接:https://www.pynote.net/archives/1673

留言区

电子邮件地址不会被公开。 必填项已用*标注


前一篇:
后一篇:

More


©Copyright 麦新杰 Since 2019 Python笔记

go to top