python 笔记:argparse
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 笔记:argparse相关的知识,希望对你有一定的参考价值。
1 介绍
argparse模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后argparse模块将弄清如何从sys.argv中解析出那些参数。
argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
2 基本步骤
2.0 导入库
import argparse
2.1 创建解析器
第一步是创建一个ArgumentParser对象:
parser = argparse.ArgumentParser(description='Process some integers.')
ArgumentParser对象包含将命令行解析成 Python 数据类型所需的全部信息。
2.2 添加参数
给一个ArgumentParser对象添加程序参数信息是通过调用add_argument方法完成的。
通常,这些调用指定 ArgumentParser对象如何获取命令行字符串并将其转换为对象。
这些信息在之后parse_args()调用时被存储和使用。
ArgumentParser对象的关键字见3
parser.add_argument(
'integers',
metavar='N',
type=int,
nargs='+',
help='an integer for the accumulator')
parser.add_argument(
'--sum',
dest='accumulate',
action='store_const',
const=sum,
default=max,
help='sum the integers (default: find the max)')
之后parse_args()调用时,将返回一个具有 integers
和 accumulate
两个属性的对象。
integers
属性将是一个包含一个或多个整数的列表
accumulate
属性当命令行中指定了 --sum
参数时将是sum函数,否则则是max函数。
2.3 解析参数
ArgumentParser对象通过parse_args()方法解析参数。
它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。
parser.parse_args(['--sum', '7', '-1', '42'])
在脚本和命令行中,通常parse_args()会被不带参数调用,而ArgumentParser对象将自动从 sys.args 中确定命令行参数。
2.4 提取参数
args = parser.parse_args(),得到的结果是一种类似于python字典的数据类型
import argparse parser = argparse.ArgumentParser() parser.add_argument('--foo', help='foo help') args = parser.parse_args() print(args)
我们可以使用args.参数名的方式来提取参数
import argparse parser = argparse.ArgumentParser() parser.add_argument('--foo', help='foo help') parser.add_argument('bax') args = parser.parse_args() print('args.foo',args.foo,'args.bax',args.bax)
3 ArgumentParser对象关键字
prog | 程序的名称(默认值: 这一默认值几乎总是可取的,因为它将使帮助消息与从命令行调用此程序的方式相匹配。 |
usage | 描述程序用途的字符串(默认值:从添加到解析器的参数生成) 默认情况下,会根据它包含的参数来构建用法消息:
当手动设置usage 的时候,可以覆盖这个默认消息
|
description | 在参数帮助文档之前显示的文本(默认值:无) 这个参数简要描述这个程序做什么以及怎么做。 在帮助消息中,这个描述会显示在命令行用法字符串和各种参数的帮助消息之间:
|
epilog | 在参数帮助文档之后显示的文本(默认值:无) |
parents | 一个ArgumentParser对象的列表,它们的参数也应包含在内 有些时候,少数解析器会使用同一系列参数。 单个解析器能够通过提供“ 参数使用ArgumentParser对象的列表,从它们那里收集所有的位置和可选的行为,然后将这写行为加到正在构建的ArgumentParser对象中。
注意大多数父解析器会指定 |
formatter_class | 用于自定义帮助文档输出格式的类 |
prefix_chars | 可选参数的前缀字符集合(默认值: '-') 许多命令行会使用
|
fromfile_prefix_chars | 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值: |
argument_default | 参数的全局默认值(默认值: None ) |
conflict_handler | 解决冲突选项的策略(通常是不必要的) |
add_help | 为解析器添加一个 -h/--help 选项(默认值: True ) |
allow_abbrev | 如果缩写是无歧义的,则允许缩写长选项 (默认值: 默认为True的话,这两个表示的都是+abc的意思 |
exit_on_error | 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True ) |
4 add_argument 方法
定义单个的命令行参数应当如何解析。它的形参如下:
names | 一个命名或者一个选项字符串的列表,例如 前缀: 位置参数: 当parse_args()函数被调用,选项会以 | |
action | 当参数在命令行中出现时使用的动作基本类型。 将命令行参数与动作相关联。 这些动作可以做与它们相关联的命令行参数的任何事,尽管大多数动作只是简单的向parse_args() 返回的对象上添加属性。
| |
'store' | 存储参数的值。这是默认的动作 | |
'store_const' | 存储被const参数指定的值 只有被parser解析了才会赋值 | |
| | |
'append' | 存储一个列表,并且将每个参数值追加到列表中。在允许多次使用选项时很有用。
| |
nargs | 命令行参数应当消耗的数目。 关联不同数目的命令行参数到单一动作 | |
N (一个整数) | 命令行中的 注意 | |
'?' | 如果可能的话,会从命令行中消耗一个参数,并产生一个单一项。如果当前没有命令行参数,则会产生default值。
对于选项,如果选项字符串出现但没有跟随命令行参数,则会产生 const值 | |
‘*’ | 所有当前命令行参数被聚集到一个列表中。 | |
const | 被一些action和nargs选择所需求的常数。 ``const`` 参数用于保存不从命令行中读取但被各种ArgumentParser对象的动作需求的常数值。 最常用的两例为上面所说的两种情况:
| |
default | 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。 | |
对于nargs等于
| ||
提供 | ||
type | 命令行参数应当被转换成的类型。 默认情况下,解析器会将命令行参数当作简单字符串读入。 用户自定义的函数也可以被使用 | |
choice | 可用的参数的容器 | |
required | 此命令行选项是否可省略 (仅选项可用) 通常会认为 要让一个选项成为 必需的,则可以将 | |
help | 一个此选项作用的简单描述。 | |
metavar | 在使用方法消息中使用的参数值示例。(该值不是默认值)
|
以上是关于python 笔记:argparse的主要内容,如果未能解决你的问题,请参考以下文章