python argparse 用法总结

python argparse 用法总结

深度学习中会经常用到Python的一些包,易学也容易忘记,网上很多的资源,学习后做一个简单的笔记,方便后续查找。

1.argparse介绍

pythonde的一个命令行解析包

2.基本用法

下面的文件保存为 argparse_test.py

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

执行:python argparse_test.py

无输出和错误信息

执行:python argparse_test.py --help

输出:

在这里插入图片描述

执行:python argparse_test.py -v

输出:错误,未定义-v参数

3.positional arguments

定位参数,修改argparse_test.py为如下:

import argparse

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

执行:python argparse_test.py

在这里插入图片描述

  • 不带参数测试,由于echo参数为空,报错

执行:python argparse_test.py -h

在这里插入图片描述

  • 打印帮助信息,包括相关参数信息

执行:python argparse_test.py hhhhhhh

在这里插入图片描述

  • 正常输入,回显输入的字符串

4.optional arguments

可选参数

  1. 一种是通过一个-来指定的短参数,如-h
  2. 一种是通过–来指定的长参数,–help

上述两者可以共存,也可以只使用一个:

修改上述代码如下:

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 argparse_test.py -v 1

执行:python argparse_test.py --verbosity 1

执行上述两条指定都输出:verbosity turned on

执行:python argparse_test.py -h

显示帮助信息

执行:python argparse_test.py -v

报错,未指定相关参数

5.action=‘store_true’

import argparse

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

执行:python argparse_test.py -v

执行:python argparse_test.py -v 1

得到相同的结果

6.类型Type

默认参数为str,可以通过type进行类型转换

import argparse

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

7.可选值choice=[]

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)

在这里插入图片描述

8.自定义帮助信息help

如上述程序,help=" "

9.程序用法帮助

通过argparse.ArgumentParser(description=“calculate X to the power of Y”)即可

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))

在这里插入图片描述

10.互斥参数

上述程序中定义互斥参数

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

第1行定义互斥组,第2,3行在互斥组中添加了-v -q两个参数组。
在这里插入图片描述

-q和-v是互斥的两个参数,同时出现时回出错

11.默认参数

default参数设置

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],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)

在这里插入图片描述

12.参考

https://www.cnblogs.com/yymn/p/8056487.html

猜你喜欢

转载自blog.csdn.net/happyday_d/article/details/83999765
今日推荐