当前位置: 首页 > 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

相关文章:

argparse--命令行参数解析库

文章目录 位置参数help ->描述信息type -> 被转换的类型 可选参数action ->动作基本类型 (store_true)短选项 结合位置参数和可选参数choiceaction ->动作基本类型 (count)default -> 默认值 argparse模块使编写用户友好的命令行变得容易 接口。程序定义了它需要…...

elasticsearch4-文档操作

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…...

阿里云服务器上CentOS 7.6使用rpm包安装MySQL 8.0.31

我这里下载的是最新版本,需要到MySQL官网最新版本下载地址。 要是想要下载以前的版本需要到MySQL以前版本网址中。 1)先使用wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar(这个网址现在已经不…...

redis未授权漏洞

redis未授权漏洞是什么? Redis 默认情况下会绑定在 0.0.0.0:6379,这样将会将 Redis 服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取 Redis的数据 它有什么危…...

详解3dMax中渲染线框的两种简单方法

在3dMax中渲染线框是你在某个时候想要完成的事情,例如为了演示分解步骤,或是仅仅为了在模型上创建线框覆盖的独特效果。为三维模型渲染线框最常见的原因是能够在模型上显示干净的拓扑。这篇文章将带你了解在3dMax中渲染三维模型线框的两种最常见、最简单…...

Git - Git 工作流程

文章目录 Git WorkFlow图解小结 Git WorkFlow Git Flow是一种基于Git的工作流程,确实利用了Git作为分布式版本控制系统的优势。 本地代码库 (Local Repository): 每个开发者都维护自己的本地代码库,这是Git分布式性质的体现。本地代码库包含了完整的项目…...

ARM如何利用PMU的Cycle Counter(时钟周期)来计算出CPU的时钟频率

本章将学习如何利用ARM PMU的Cycle Counter,来计算出CPU的时钟周期,从而计算出CPU的时钟频率。在介绍计算方法前,有必要先介绍下什么是时钟周期、机器周期以及指令周期。 如何计算出CPU的时钟频率 一,时钟周期,机器周…...

56资源网系统源码搭建知识付费-含源码

内置了上万条数据资源 大致功能: 支持免费与付费(增加了插件付费插件)支持侧边栏支持添加各类型广告(你所能用到的基本都有).支持网盘下载模块支持所有页面自定义支持文章页三方跳转支持添加页面支持自定义采集&#…...

【运营版】仿东郊到家上门服务app小程序开发同城美容家政预约推拿足浴SPA技师派单源码

套餐一:源码=小程序端+公众号端+APP端=280元 套餐二:全包服务 包服务器+域名+APP+认证小程序+H5+PC=1000元 后端:系统后端使用PHP语言开发 前端:前端使用uniapp进行前后端分离开发 用户端功能模块:技师选择 预约服务 优惠券 订单 技师服务...

uniapp项目实践总结(十五)使用websocket实现简易聊天室

导语:在一些社交软件中,经常可以看到各种聊天室的界面,接下来就总结一下聊天室的原理个实现方法,最后做一个简易的聊天室,包括登录/登出、加入/离开房间、发送接收聊天消息等功能。 目录 准备工作原理分析组件实现实战演练服务端搭建案例展示准备工作 在pages/index文件夹…...

论文阅读之Learning and Generalization of Motor Skills by Learning from Demonstration

论文阅读其实就是用自己的话讲一遍,然后理解其中的方法 0、论文基本信息 为什么阅读此篇论文:因为它是DMP经典论文,被引多次,学史可以明智,了解最初机理。 论文题目:Learning and Generalization of Moto…...

SpringCloud中的Eureka的集群配置

微服务框架中最为重要的就是注册中心,如果只是单注册中心,一旦出现问题,容易导致整个微服务环境不可用,所以建议注册中心集群。 目前SpringCloud框架中使用Eureka作为注册中心,本文简单介绍一下Eureka的集群配置&…...

10 Ubuntu下配置STMCubeMX与CLion IDE联合环境搭建(不包含下载CLion的教程)

序言 果然作为一名测控系的学生,纯搞视觉多少还是有点与专业脱节,决定入坑嵌入式。选择STM32进行入门,并且使用CubeMX加CLion作为我的第一个真正意义上的嵌入式开发环境(大一的时候玩过一段时间,但是没什么技术&#…...

负载均衡原理及应用

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

视频讲解|1033含sop的配电网重构(含风光可多时段拓展)

目录 1 主要内容 程序特点 讲解重点 2 视频链接 1 主要内容 该视频为含sop的配电网重构matlab代码讲解,对应资源下载链接为含sop的配电网重构(含风光|可多时段拓展),程序主要内容是:针对含sop的配电网重构模型&…...

uni-app监听页面滚动

在uni-app中可以通过监听页面滚动事件来实现滚动效果或响应滚动事件 在需要监听滚动的页面或组件中&#xff0c;添加一个scroll元素&#xff0c;用于容纳内容并实现滚动效果。 <template><view class"container"><scroll-view scroll-y scroll"…...

[字符串和内存函数]strcmp字符串函数的详解和模拟

strcmp函数 strcmp函数是一个用于比较两个字符串的C标准库函数。它的原型为&#xff1a; int strcmp(const char* str1, const char* str2);strcmp函数会比较str1和str2两个字符串的字符序列&#xff0c;并返回一个整数值来表示它们之间的大小关系。返回值的含义如下&#xff…...

zookeeper 常见问题处理

调整jvm参数 [rootvm-02 conf]# cat /opt/app/zookeeper-3.4.14/bin/zkEnv.sh |grep java.env -A3 -B3ZOOCFG"$ZOOCFGDIR/$ZOOCFG"if [ -f "$ZOOCFGDIR/java.env" ] then. "$ZOOCFGDIR/java.env" fiif [ "x${ZOO_LOG_DIR}" "x&…...

repo 命令

repo命令是Google开发的用于管理Android版本库的一个工具。 repo命令并不是用于取代git&#xff0c;而是用Python对git进行了一定的封装&#xff0c;简化了对多个Git版本库的管理。 repo init -u -b -m <manifest 文件名称> repo sync 相当于 git clone 获取 git remote…...

一、 计算机网络概论

一、计算机网络概论 1、计算机网络概述 1.1、概念 计算机网络是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统 是一些互连的、自治的计算机系统的集合 以能够相互共享资源的方…...

从零学习开发一个RISC-V操作系统(一)丨计算机组成原理相关知识与RISC-V指令集简介

本篇文章的内容 一、计算机组成原理的相关知识1.1 计算机的硬件组成1.2 程序的存储与执行1.3 程序语言的设计和进化1.4 存储设备的层次结构1.5 操作系统 二、RISC-V的指令集ISA简介2.1 什么是ISA2.2 复杂指令集&#xff08;CISC&#xff09;和精简指令集&#xff08;RISC&#…...

C++ - 异常介绍和使用

前言 我们在日常编写代码的时候&#xff0c;难免会出现编写错误带来程序的奔溃&#xff0c;或者是用户在使用我们编写的程序时候&#xff0c;使用错误所带来程序的奔溃。 在C 当中 可以对你觉得可能发生 错误 的地方在运行之前进行判断&#xff0c;发生错误可以给出提示。 C…...

iText实战--在现有PDF上工作

6.1 使用PdfReader读取PDF 检索文档和页面信息 D:/data/iText/inAction/chapter03/image_direct.pdf Number of pages: 1 Size of page 1: [0.0,0.0,283.0,416.0] Rotation of page 1: 0 Page size with rotation of page 1: Rectangle: 283.0x416.0 (rot: 0 degrees) Is reb…...

SQL优化--count优化

select count(*) from tb_user ;在之前的测试中&#xff0c;我们发现&#xff0c;如果数据量很大&#xff0c;在执行count操作时&#xff0c;是非常耗时的。 MyISAM 引擎把一个表的总行数存在了磁盘上&#xff0c;因此执行 count(*) 的时候会直接返回这个 数&#xff0c;效率很…...

IDEA下使用Spring MVC

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…...

2022基金从业人员资格管理及后续职业培训 部分答案(自答)

2022基金从业人员资格管理及后续职业培训 区块链在金融交易后处理中的应用私募基金行业典型违法案例分析《证券法》修订情况报告《刑法修正案&#xff08;十一&#xff09;》金融犯罪条款中国结算港股通结算业务介绍商品投资与商品配置价值气候技术&#xff1a;实现双碳目标的技…...

阿里云通义千问向全社会开放,近期将开源更大参数规模大模型

9月13日&#xff0c;阿里云宣布通义千问大模型已首批通过备案&#xff0c;并正式向公众开放&#xff0c;广大用户可登录通义千问官网体验&#xff0c;企业用户可以通过阿里云调用通义千问API。 通义千问在技术创新和行业应用上均位居大模型行业前列。IDC最新的AI大模型评估报告…...

数据结构:二叉查找树

文章目录 二叉查找树一&#xff0c;概述二&#xff0c;添加数据三&#xff0c;删除数据 二叉查找树 一&#xff0c;概述 二叉查找树&#xff0c;也称为二叉搜索树&#xff0c;是一种特殊的二叉树&#xff0c;它或者是一颗空树&#xff0c;或者具有以下性质&#xff1a;对于每…...

Redis的介绍,安装Redis的方式

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Redis 初识Redis1.1 认识Redis1.2 安装Redis的方式…...

深入理解CI/CD流程:改变你的开发生命周期

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

网站开发目的和意义/培训seo哪家学校好

Using mysqldump for Backups使用mysqldump工具可以以以下几种方式来生成dump文件:.作为备份在数据丢失的情况下来执行数据恢复.作为源数据用来配置复制从服务器.作为源数据用来进行实验:-为了复制数据库而不用改变源数据-为了测试潜在的升级后不兼容的问题mysqldump生成两种类…...

设计师网址导航 优设/福州短视频seo服务

1.直接使用定义好的颜色 \usepackage{color} \textcolor{red/blue/green/black/white/cyan/magenta/yellow}{text} 其中textcolor{...}中包含的是系统定义好的颜色 2.组合red、green和blue的值合成我们想要的颜色 \usepackage{color} \textcolor[rgb]{r,g,b}{text} 其中{r,g,b}…...

视频弹幕网站建设/百度平台客服

给大家炒个冷饭&#xff0c;是我在2003年写的一点心得。不过现在来看还是有启发意义的&#xff0c;虽然笔法有些稚嫩 实施分为这几个阶段&#xff1a;1字典准备&#xff0c;系统参数配置2客户化3使用培训4做报表做运行监控5升级更新版本这几部分都挺费时间。为什么&#xff1f…...

优跃达官网网站建设项目/爱站网排行榜

3-1、标识符。为什么python 中不需要变量名和变量类型声明&#xff1f; python语言是动态的、强类型语言&#xff0c;一言以蔽之&#xff01; 动态编译语言特点&#xff1a;  ◆不用事先声明类型&#xff0c;随时赋值为其他类型  ◆编译时不知道是什么类型&#xff0c;很难…...

做视频解析网站违法不/优化大师 win10下载

示例1&#xff1a; 输入 5 1000000007 2 3 4 5 107输出 2 24 264 3240 736935633题意&#xff1a; 一个森林的代价为内部每个节点度数的平方和。问所有带标号的n 个点的森林的代价和 。 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 5…...

wordpress facebook login/谷歌外链工具

两个节点&#xff0c;都可以更新数据&#xff0c;并且互为主从&#xff0c;容易产生的问题&#xff1a;数据不一致&#xff1b;因此慎用&#xff0c;考虑要点&#xff1a;自动增长id&#xff0c;配置一个节点使用奇数id 主主复制的配置步骤&#xff1a; (1) 各节点使用一个惟一…...