Argparse模块常见用法
Argparse模块常见用法
argparse模块是Python中用来读取命令行参数的模块,程序定义它需要的参数,然后argparse会自动从sys.argv中解析出这些参数。
一、创建一个解释器
1 | import argparse |
接着我们试试执行该程序,使用-h参数打印帮助文档:
1 | python main.py -h |
description是在帮助文档解释参数前提供的文本信息。
在官方文档中,给出了ArgumentParse对象的参数解释:
- prog - 项目名称 (default:
os.path.basename(sys.argv[0])) - usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
- description - 在参数帮助文档之前显示的文本(默认值:无)
- epilog - 在参数帮助文档之后显示的文本(默认值:无)
- parents - 一个
ArgumentParser对象的列表,它们的参数也应包含在内 - formatter_class - 用于自定义帮助文档输出格式的类
- prefix_chars - 可选参数的前缀字符集合(默认值: ‘-’)
- fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:
None) - argument_default - 参数的全局默认值(默认值:
None) - conflict_handler - 解决冲突选项的策略(通常是不必要的)
- add_help - 为解析器添加一个
-h/--help选项(默认值:True) - allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:
True) - exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值:
True)
二、为解释器添加参数
此时需要使用parser的add_argument方法,以下是常见用法:
1 | parser.add_argument('-n','--name',default="Torture") |
可以通过打印parser.parse_args()来查看当前的解释器参数状态:
1 | ''' |
执行命令python main.py -h查看帮助文档:
1 | ''' |
我们发现,现在的参数有三个了。可以通过-h,-n,-u来调用这些参数。关于add_argument方法,第一个参数是用于存放名称或选项字符串的。前面一个参数-u是简化的输入,只有-前缀会被以选项进行识别,剩下的参数都会被假定为位置参数。所以,--university则是该参数的名称。当然通过-u或是--university都能往该参数中输入。
default是默认值参数,用于设定默认值的,而help则是在帮助文档中用来描述该参数。
指定参数动作
1 | parser.add_argument('-f','--foo',action='store') |
action用来指定动作,"store"是默认值,用于存储参数。
1 | python main.py -f 10 |
也可以指定存储布尔型。
1 | parser.add_argument('-f','--foo',action='store_true') |
append是存储一个列表,并将每个参数的值追加:
1 | parser.add_argument('-f','--foo',action='append') |
指定版本信息
1 | parser=argparse.ArgumentParser(description="Test",prog="ARGPARSE") |
通过指定version动作和version参数进行输出:
1 | python main.py -v |
指定参数类型
type参数可以指定类型,一般读进来的参数是字符串,此时可以通过type参数转换到需要的格式
例如:
1 | parser=argparse.ArgumentParser(description="Test",prog="ARGPARSE") |
输入参数:
1 | python main.py -d 10 -f 10.658 -p 1.txt -c 't' |
得到的结果为:
1 | Namespace(data=10, float=10.658, path=<_io.TextIOWrapper name='1.txt' mode='r' encoding='cp936'>, code=116) |
指定参数数量
通过nargs参数可以关联不同数目的命令行参数到单一的动作,支持的值有:
N
-
整数,命令行中的N个参数会被聚集到一个列表中。
-
例如:
1
2
3
4parser.add_argument("-d",'--data',nargs=2)
parser.add_argument('-f','--float',nargs=1)
print(parser.parse_args("-d 1 2 -f 1.0".split())) -
结果如下:
1
Namespace(data=['1', '2'], float=['1.0'])
+
- 至少有一个值被加入参数
- 没有的话会报错
?
- 至少有零个值被加入参数
- 没有的话会调用default值
三、获取参数
我们可以定义一个载入的函数:
1 | def arg_parse(): |
注意将parser返回回来
然后可以通过该函数获取参数信息了
1 | arg=arg_parse() |
更多内容详见官方文档:https://docs.python.org/zh-cn/3/library/argparse.html#the-add-argument-method.



