argparser命令解析

标签: python argparse

argparse 命令行解析

例1

import argparse

parser = argparse.ArgumentParser(
                    prog = 'ProgramName',
                    description = 'What the program does',
                    epilog = 'Text at the bottom of help')

parser.add_argument('filename')           # positional argument
parser.add_argument('-c', '--count' metavar='COUNT')      # option that takes a value
parser.add_argument('-v', '--verbose',
                    action='store_true')  # on/off flag
args = parser.parse_args()
print(args.filename, args.count, args.verbose)

输出

(dsdl-sdk) PS D:\workspace\s3utils> python main.py -h
usage: ProgramName [-h] [-c COUNT] [-v] filename
What the program does
positional arguments:
  filename
options:
  -h, --help            show this help message and exit
  -c COUNT, --count COUNT
  -v, --verbose
Text at the bottom of help

可见使用argparse一共3个步骤

  1. 创建ArgumentParser对象

  2. 利用add_argument()方法增加命令选项, 对选项做一些有必要的互斥、默认值等设置

  3. 调用parse_args()解析参数,得到一个Namescape对象

ArgumentParser对象的创建

  • prog - 程序的名称 (默认值: os.path.basename(sys.argv[0]))
  • usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
  • description - Text to display before the argument help (by default, no text)
  • epilog - Text to display after the argument help (by default, no text)
  • 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)

add_argument()方法参数

Name Description Values
action Specify how an argument should be handled 'store', 'store_const', 'store_true', 'append', 'append_const', 'count', 'help', 'version'
choices 限定参数值取值范围 ['foo', 'bar'], range(1, 10), or Container instance
const Store a constant value
default 默认值 Defaults to None
dest 例如add_argument里用的 --name, 想在程序里用 myname
help Help message for an argument
metavar 打印usage的时候参数的默认值 仅在显示层面替换,dest在code的变量层面替换
nargs 参数可取的个数 int, '?', '*', '+', or argparse.REMAINDER
required Indicate whether an argument is required or optional True or False
type Automatically convert an argument to the given type int, float, argparse.FileType('w'), or callable function

互斥

分组

build:   __BUILD_VERSION__