python标准模块argparse,解析命令行中的可选参数 和 位置参数

argparse介绍:

argparse 模块是python的标准库,是一个命令行解析(分析)库。
可以处理命令行中的:可选参数 和 位置参数
命令行中的:位置参数 是必选的,前面不需要加 -
命令行中的:可选参数 是可选的,前面需要加 -来指定可选参数,如 -h(--help) -t -s(--src) -d(--dst) -n(--num) ....

命令行的格式:
  cmd>> python xx.py [可选参数1 可选参数2 ...] 位置参数1 位置参数2 ...

argparse官方文档:
https://docs.python.org/zh-cn/3/howto/argparse.html

基本用法:

导入:
  import argparse

实例化一个解析器:
  parser = argparse.ArgumentParser(description='描述脚本的作用'),参数如下:
    prog 可选,程序脚本的名称,默认值为:sys.argv[0]。
    usage 可选,程序脚本的使用说明,默认值为:根据参数自动生成。
    description 用于描述脚本的功能作用,默认为空。一般只指定description即可。
    epilog 可选, 显示完-help信息后的结尾文本。
    prefix_chars 可选,-命令的前缀,默认是"-" 。
    add_help 可选,是否增加-h/–help选项,默认是True。

添加命令行的位置参数(positional arguments):
  语法:parser.add_argument(dest,...,name=value,...)

  parser.add_argument(dest='w',nargs='*', type=argparse.FileType('br'), help='显示帮助的文本')
    dest 可以指定多个dest。字符串类型。给位置参数或可选参数关联的名字而已。
    name 可选,可以指定多个name。表示位置参数或可选参数的标识符名字。
    metavar 可选,字符串类型。可以描述dest的类型。
    nargs 可选,指定位置/可选参数后面的value有多少个,默认为1。可以指定:"*"(0个或多个value)、"+"(1个或多个value)、"?"(0个或1个)、整数。
    type  可选,指定位置/可选参数的数据类型,默认为str。可以指定是type=argparse.FileType('w'),参数需要指定模式,默认为'r'模式。
    choice 可选,指定位置/可选参数的取值范围。

添加命令行的可选参数(optional arguments):
  语法:parser.add_argument(option_string,option_string,...,name=value,...)

  parser.add_argument('-t', '--test', action='store_true',help='显示帮助的文本')
    action 可选,字符串类型,当读取的参数中出现指定参数的时候的行为。取值:'store_true'、'append_const'
    const 可选,可以指定内置函数(不需要带括号)
    default  可选,表示位置参数和可选参数的默认值,可以指定python中提供的类型 或 内置函数(不需要带括号)。默认值是default=sys.stdout。
    required 可选,表示可选参数必须输入,只支持可选参数的设置。指定布尔值类型,默认为True。

    注意:const 和 default 参数可以同时存在,同时存在的使用规则如下:
      如果cmd命令行中传入了这个 位置参数,则使用const指定的值,或调用const指定的内置函数
      如果cmd命令行中没传入这个 位置参数,则使用default指定的值,或调用default指定的内置函数

打印帮助信息:
  parser.print_help()

获取 位置参数 和 位置参数 进行解析:
  args = parser.parse_args() #返回一个Namespace对象。
    #该Namespace对象保存着 位置参数 和 可选参数的信息。

实例1(整数列表求和):

import argparse
import sys
parser = argparse.ArgumentParser(description='在命令行对整数求和')
parser.add_argument(
    dest='integers', metavar='int', nargs='+', type=int,
    help='要求和的整数'
)
parser.add_argument(
    '--log', default=sys.stdout, type=argparse.FileType('w'),
    help='把求和后的数写到sys.stdout控制台中'
)
args = parser.parse_args()
print(args)
args.log.write('%s' % sum(args.integers))#在命令行中输出相加后的结果
args.log.close()#关闭

cmd输出效果:

在这里插入图片描述

实例2(两数相加):

import argparse
import sys

parser = argparse.ArgumentParser(description='两个数相加')
#添加位置参数
parser.add_argument(
    dest='add1',
    type=int,
    nargs=1, help='第1个加数'
)
parser.add_argument(
    dest='add2',
    type=int,
    nargs=1, help='第2个加数'
)
#添加可选参数
parser.add_argument(
    '-e', '--eg', help='用法:python %s 4 5'%sys.argv[0]
)
args = parser.parse_args()
print(args)
print("两数相加: %s + %s = %s "%(args.add1[0],args.add2[0],args.add1[0]+args.add2[0]))

cmd输出效果:

在这里插入图片描述

实例3(整数列表的两个操作:求和、求最大值):

import argparse

parser = argparse.ArgumentParser(description='用来处理整数列表的两个操作:求和、求最大值')

parser.add_argument(
    'integers', metavar='intNum',
    type=int, nargs='+', help='累加的整数'
)

parser.add_argument(
    '--sum',dest='calcFn',action='store_const',
    const=sum,default=max,help='对整数列表求和(默认值:查找最大值)'
)
#如果不传 --sum 时,则调用 max 内置函数,对integers列表进行求最大值并返回
#如果传 --sum 时,则调用 sum 内置函数,对integers列表进行求和并返回

args = parser.parse_args()
print(args)
print(args.calcFn(args.integers))

cmd输出效果:

在这里插入图片描述

----结束----
仅学习。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值