当前位置: 首页 > news >正文

argparse--命令行参数解析库

文章目录

      • 位置参数
        • help ->描述信息
        • type -> 被转换的类型
      • 可选参数
        • action ->动作基本类型 (store_true)
        • 短选项
      • 结合位置参数和可选参数
        • choice
        • action ->动作基本类型 (count)
        • default -> 默认值

argparse模块使编写用户友好的命令行变得容易 接口。程序定义了它需要的参数,以及 argparse 我会弄清楚如何解析 sys.argv中的那些。 argparse 模块还自动生成帮助和使用消息。 模块 当用户给程序提供无效参数时,也会发出错误。

构建argparse模块主要分为四步:

导入argparse模块
创建ArgumentParser对象:ArgumentParser对象包含将命令行解析成python数据类型所需的全部信息
添加参数:给上述创建的对象添加参数,调用add_argument()方法   
解析参数:将上述添加的参数进行解析,调用parse_args()方法

位置参数

help ->描述信息

type -> 被转换的类型

import argparseparse =argparse.ArgumentParser()
parse.add_argument('number',help="请输入数字",type=int) #指定参数必须是整型
parse.add_argument("str",help='请输入字符串',type=str)   #指定参数必须是字符串类型
args=parse.parse_args()print(args)#返回字典
print(args.number) 
print(args.str)

image-20230912142327233

  • add_argument()方法该方法用于指定程序将能接受哪些命令行选项
    • 会把我们传递给它的选项视作为字符串类型,需要type参数指定数据类型

可选参数

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

image-20230912144917833

  • 这一程序被设计为当指定 --info 选项时显示某些东西,否则不显示。
  • 为表明此选项确实是可选的,当不附带该选项运行程序时将不会提示任何错误。 请注意在默认情况下,如果一个可选参数未被使用,则关联的变量,在这个例子中是 args.info,将被赋值为 None,这也就是它在 if 语句中无法通过真值检测的原因。
  • 帮助信息有点不同。
  • 使用 --info 选项时,必须指定一个值,但可以是任何值。

action ->动作基本类型 (store_true)

action是一种新的赋值方式,主要决定参数为True or False

action=‘store_true’,在运行时指定了该参数他就为True
action=‘store_false’,就是flase

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

image-20230912151440961

  • 现在此选项更像是一个旗标而不需要接受特定的值。 我们甚至改变了此选项的名字来匹配这一点。 请注意我们现在指定了一个新的关键词 action,并将其赋值为 "store_true"。 这意味着,如果指定了该选项,则将值 True 赋给 args.verbose。 如未指定则表示其值为 False
  • 当你为其指定一个值时,它会报错,符合作为标志的真正的精神。

短选项

import math
import argparseparser = argparse.ArgumentParser(description="计算圆柱体的体积")#描述解析对象
parser.add_argument('-R','--radius',type = int,help = '半径')
parser.add_argument('-H','--height',type = int,help = '高')
args = parser.parse_args()def cylinder_volume(radius,height):vol = (math.pi)*(radius**2)*(height)return volif __name__ == '__main__':print(cylinder_volume(args.radius,args.height))

image-20230912152940619

结合位置参数和可选参数

from termcolor import cprint,colored
import argparseparser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('--bool',action="store_true",help="increase output bool")args = parser.parse_args()
answer=args.num**2
if args.bool:print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
else:print(answer)

image-20230912154520531

  • 位置参数和可选参数的位置前后顺序无关紧要

choice

from termcolor import cprint,colored
import argparseparser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',type=int,help="increase output bool",choices=[0,1,2,3,4])args = parser.parse_args()
answer=args.num**2
if args.bool==3:print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool ==1:print(colored(f"{args.num}^2 == {answer}",color='green'))
else:print(answer)

在这里插入图片描述

action ->动作基本类型 (count)

引入了另一种动作 “count”,来统计特定选项出现的次数

from termcolor import cprint,colored
import argparseparser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',help="increase output bool",action="count")args = parser.parse_args()
answer=args.num**2
if args.bool==3:print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool ==1:print(colored(f"{args.num}^2 == {answer}",color='green'))
else:print(answer)

image-20230912162526131

  • 如果你不添加 -b 标志,这一标志的值会是 None

image-20230912163550874

解决上述报错,需要加入一个参数default,设置默认值

default -> 默认值

from termcolor import cprint,colored
import argparseparser=argparse.ArgumentParser(description="计算一个数字的平方")
parser.add_argument('num',help="给一个数字",type= int)
parser.add_argument('-b','--bool',help="increase output bool",action="count",default=0)args = parser.parse_args()
answer=args.num**2
if args.bool >=3:print(colored(f"{args.num}的平方等于{answer}",color='red',on_color='on_white'))
elif args.bool >=1:print(colored(f"{args.num}^2 == {answer}",color='green'))
else:print(answer)

image-20230912163657060

  • 默认情况下如果一个可选参数没有被指定,它的值会是 None,并且它不能和整数值相比较(所以产生了 TypeError 异常)

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)
args = parser.parse_args()
answer = args.x**args.y
if args.verbosity >= 2:print(f"Running '{__file__}'")
if args.verbosity >= 1:print(f"{args.x}^{args.y} == ", end="")
print(answer)

image-20230912165807357

http://www.lryc.cn/news/168404.html

相关文章:

  • elasticsearch4-文档操作
  • 阿里云服务器上CentOS 7.6使用rpm包安装MySQL 8.0.31
  • redis未授权漏洞
  • 详解3dMax中渲染线框的两种简单方法
  • Git - Git 工作流程
  • ARM如何利用PMU的Cycle Counter(时钟周期)来计算出CPU的时钟频率
  • 56资源网系统源码搭建知识付费-含源码
  • 【运营版】仿东郊到家上门服务app小程序开发同城美容家政预约推拿足浴SPA技师派单源码
  • uniapp项目实践总结(十五)使用websocket实现简易聊天室
  • 论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration
  • SpringCloud中的Eureka的集群配置
  • 10 Ubuntu下配置STMCubeMX与CLion IDE联合环境搭建(不包含下载CLion的教程)
  • 负载均衡原理及应用
  • 视频讲解|1033含sop的配电网重构(含风光可多时段拓展)
  • uni-app监听页面滚动
  • [字符串和内存函数]strcmp字符串函数的详解和模拟
  • zookeeper 常见问题处理
  • repo 命令
  • 一、 计算机网络概论
  • 从零学习开发一个RISC-V操作系统(一)丨计算机组成原理相关知识与RISC-V指令集简介
  • C++ - 异常介绍和使用
  • iText实战--在现有PDF上工作
  • SQL优化--count优化
  • IDEA下使用Spring MVC
  • 2022基金从业人员资格管理及后续职业培训 部分答案(自答)
  • 阿里云通义千问向全社会开放,近期将开源更大参数规模大模型
  • 数据结构:二叉查找树
  • Redis的介绍,安装Redis的方式
  • 深入理解CI/CD流程:改变你的开发生命周期
  • 【React】React入门