python argparse


原文链接: python argparse

sys.argv
sys.argv[0]是脚本文件的名字,如:test.py

sys.argv[1:]是以空格分割的参数列表

argparse
类ArgumentParser

class argparse.ArgumentParser(prog=None,

            usage=None, 
            description=None, 
            epilog=None, 
            parents=[], 
            formatter_class=argparse.HelpFormatter,
            prefix_chars='-', 
            fromfile_prefix_chars=None, 
            argument_default=None, 
            conflict_handler='error', 
            add_help=True)

参数:
prog:程序的名字(默认: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)

函数add_argument()

add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
参数:
name or flags:选项字符串的名字或者列表,例如foo 或者-f, --foo。
action:在命令行遇到该参数时采取的基本动作类型。
nargs:应该读取的命令行参数数目。
const:某些action和nargs选项要求的常数值。
default:如果命令行中没有出现该参数时的默认值。
type:命令行参数应该被转换成的类型。
choices:参数可允许的值的一个容器。
required:该命令行选项是否可以省略(只针对可选参数)。
help:参数的简短描述。
metavar:参数在帮助信息中的名字。
dest:给parse_args()返回的对象要添加的属性名称。

简单用法:

import argparse
parser = argparse.ArgumentParser(description="progrom description")
parser.add_argument('key', help="Redis key where items are stored")
parser.add_argument('--host')
arser.add_argument('--port')
parser.add_argument('--timeout', type=int, default=5)
parser.add_argument('--limit', type=int, default=0)
parser.add_argument('--progress_every', type=int, default=100)
parser.add_argument('-v', '--verbose', action='store_true')
args = parser.parse_args()

key = args.key
host = args.host
port = args.port
timeout = args.timeout
limit = args.limit
progress-every = args.progress_every
verbose = args.verbose

作者:201609301129
链接:https://www.jianshu.com/p/0361cd8b8fec
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

`