python-argparse 用法

官网文档
https://docs.python.org/zh-cn/3/library/argparse.html#module-argparse
https://www.jianshu.com/p/fef2d215b91d

用法介绍

positional arguments

定位参数的,用法是不用带-就可用

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print args.echo

##定义了一个叫echo的参数,默认必选, 执行程序包含有参数,默认第一个参数赋值给echo ,类似于键值对

optional arguments

中文名叫可选参数,有两种方式:
一种是通过一个-来指定的短参数,如-h;
一种是通过--来指定的长参数,如--help

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbosity", help="increase output verbosity")
args = parser.parse_args()
if args.verbosity:
        print("verbosity turned on")

##执行
$ python prog.py -v 1

$ python prog.py --verbosity 1
$ python prog.py -v 


##可选参数意思是可以使用  -v  也可以使用--verbosity
指定的值会保存在verbosity 中,通过args.verbosity  获取他的值

action='store_true'

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbose", help="increase output verbosity",
                    action="store_true")
args = parser.parse_args()
if args.verbose:
        print("verbosity turned on")

##不需要指定参数的值,  存的是True和False,-v 如果出现,则其值为True,否则为False
$ python prog.py -v
verbosity turned on

类型 type

argparse提供了对参数类型的解析,如果类型不符合,则直接报错

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser()
parser.add_argument('x', type=int, help="the base")
args = parser.parse_args()
answer = args.x ** 2
print(answer)

##测试
$ python prog.py 2

可选值choices=[]

如果要限定某个值的取值范围

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
                    help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
    print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:
    print("{}^2 == {}".format(args.square, answer))
else:
    print(answer)

自定义帮助信息help

parser.add_argument("square", type=int, help="display a square of a given number")
打印输出

positional arguments:
  square                display a square of a given number

整个程序定义帮助文档

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser(description="calculate X to the power of Y")
group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
args = parser.parse_args()
answer = args.x**args.y

if args.quiet:
    print answer
elif args.verbose:
    print "{} to the power {} equals {}".format(args.x, args.y, answer)
else:
    print "{}^{} == {}".format(args.x, args.y, answer)


#执行
python prog.py -h
usage: prog.py [-h] [-v | -q] x y

calculate X to the power of Y

positional arguments:
  x              the base
  y              the exponent

optional arguments:
  -h, --help     show this help message and exit
  -v, --verbose
  -q, --quiet

互斥参数

group = parser.add_mutually_exclusive_group()
group.add_argument("-v", "--verbose", action="store_true")
group.add_argument("-q", "--quiet", action="store_true")

# -v  和-q 

参数默认值

#!/usr/bin/env python
# encoding: utf-8


import argparse


parser = argparse.ArgumentParser(description="calculate X to the power of Y")
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2], default=1,
                    help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
    print "the square of {} equals {}".format(args.square, answer)
elif args.verbosity == 1:
    print "{}^2 == {}".format(args.square, answer)
else:
    print(answer)

猜你喜欢

转载自www.cnblogs.com/g2thend/p/12539618.html
今日推荐