argparse 简易使用教程
- 1.概况
- 2. action
- 3. argparse 使用demo
- 3.1 argparse 实现加法器
- 3.2 D-Model parser
1.概况
argparse是Python中用于解析命令行参数的一个模块,可以自动生成help和usage信息;当从终端输入的参数无效时,模块会输出提示信息。
必选参数和可选参数
# step1.创建ArgumentParser对象parser
parser=Argparse.ArgumentParser(description="process some integer.")
## parser保存了所有必要信息,用于将从命令行中读入的参数 解析为对应的python数据类型。
## description,用于简要介绍程序的功能和工作原理。在帮助消息中,显示在 命令行用法字符串 和 各种参数的帮助消息之间。
## prog,用于显示“程序文件名”,默认为“运行文件名”
## usage,程序使用说明。当使用了 usage 的参数之后,会覆盖覆盖了 prog 参数里面的值。
# step2: 给parser添加信息读取字段,这些字段决定parser解析读入参数的方法
parser.add_argument()
# ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
## name,用于保存输入变量
## action='store_const' 存储由const关键字参数指定的值。
## default值是一个字符串,则解析器会将该值解析为一个命令行参数,变量的默认输入
## type 指定变量的类型
## nargs单个命令行参数与要执行的单个操作相关联
## nargs='+'.'+'和'*'一样,出现的所有命令行参数都被收集到一个列表中。
## 当ArgumentParser生成帮助信息时,默认情况下使用dest的值作为每个对象的“名字”,metavar会改变显示出来的名字 - parse_args() 对象中属性的名字仍然由dest的值决定。(metavar: 这个参数用于help 信息输出中)
# step3:解析parser保存的参数,返回一个命名空间
# 在实际python脚本中parse_args()一般不使用参数,它的参数由sys.argv确定。
args = parser.parse_args()
2. action
action关键字默认状态有两种,store_true和store_false,若输入命令时,不指定其参数,则store_true显示为False,store_false显示为True。可用作一个开关操作一个开关操作。【终端命令带上之后会使用默认值】
parser.add_argument('--cuda', action='store_true', help='enables cuda')
# 终端命令不加入--cuda, args.cuda=False, 终端命令加入--cuda, args.cuda=True
parser.add_argument('--cuda', action='store_false', help='enables cuda')
# 终端命令不加入--cuda, args.cuda=True, 终端命令加入--cuda, args.cuda=False
3. argparse 使用demo
3.1 argparse 实现加法器
调用 parse_args() 将返回一个具有两个属性的对象, integers 和 accumulate 。累和语句实现,默认对输入的数据进行求最大,如果解析到sum的参数,那么求和
import argparse
parser=argparse.ArgumentParser(description="process some integer.")
parser.add_argument('integers',metavar='N',type=int,nargs='+',help='an integer for accumulator') # 可以读一个数组
parser.add_argument('--sum',dest='accumulate',action='store_const',const=sum,default=max,help='sum the integers (default:find the max)'
args=parser.parse_args()
print(args.accumulate(args.integers)) # 居然可以当作函数调用
上面程序实现了,默认求最大,可选求和的功能,结合上面程序,讲解三个函数中常用的选项含义:
3.2 D-Model parser
在程序会见到最简单的形式,指定,参数类型,可选值,默认值,和帮助信息等,在运行程序的时候可以通过命令行输入用户制定的参数,否则使用默认参数。
更多内容可以详见以下两篇博文:
https://cloud.tencent.com/developer/section/1370514
https://www.cnblogs.com/piperck/p/8446580.html
https://blog.csdn.net/LemonTree_Summer/article/details/80749359