argparse--命令行参数解析库

news/2024/11/30 18:39:27/

文章目录

      • 位置参数
        • 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.ppmy.cn/news/1107344.html

相关文章

AI项目六:基于YOLOV5的CPU版本部署openvino

若该文为原创文章,转载请注明原文出处。 一、CPU版本DEMO测试 1、创建一个新的虚拟环境 conda create -n course_torch_openvino python3.8 2、激活环境 conda activate course_torch_openvino 3、安装pytorch cpu版本 pip install torch torchvision torchau…

AI绘画:StableDiffusion实操教程-斗破苍穹-云韵-婚服(附高清图下载)

大家好,我是小梦,最近一直研究AI绘画。 不久前,我与大家分享了StableDiffusion的全面教程:“AI绘画:Stable Diffusion 终极宝典:从入门到精通 ” 然而,仍有些读者提出,虽然他们已经…

基于腾讯文档进行应届生个人求职记录

1. 新建一个腾讯文档 电脑登录QQ,点击“腾讯文档”功能键。 2. 可以选择下载客户端,也可以直接进入网页版。(本人使用网页版) 3. 点击新建,选择在线表格。 4. 编辑表名,表内容。 5. 设置文档权限&#xf…

MQTT 连接优化指南

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

SegGPT: Segmenting Everything In Context论文笔记

论文https://arxiv.org/pdf/2304.03284.pdfCodehttps://github.com/baaivision/Painter 文章目录 1. 背景2. Motivation3. Method3.1 In-Context Coloring3.2 Context Ensemble3.3 In-Context Tuning 1. 背景 在Painter中,将各种密集预测任务视为一种着色问题。 在…

Trinitycore学习之在Linux环境上搭建服务器并测试运行

1:准备环境,这里用ubuntu 22.04进行测试,安装环境后为了方便,换源。 注意:这里用的虚拟机,在虚拟机上生成地图信息,地图信息占用内存比较大,我暂时设置磁盘50G进行测试,…

数据结构:树的概念和结构

文章目录 1. 树的概念2. 树的结构3. 树的相关概念4. 树的表示孩子表示法双亲表示法孩子兄弟表示法 5. 树在实际中的应用5. 树在实际中的应用 1. 树的概念 树是一种非线性的数据结构,它是由 n (n > 0)个有限结点组成一个具有层次关系的. 把它叫做树是因为它看起来像一棵倒挂的…

简易yum仓库搭建

目录 一、实验准备 二、获取yum仓库、安装httpd 三、客户机配置yum源 四、测试、验证 一、实验准备 准备两台主机: 192.168.115.148 :安装http 、作为yum仓库、挂载默认光盘 192.168.115.148 :作为客户机使用yum仓库、不挂载光盘 二、…