首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

argparse学习笔记

编程知识
2024年08月02日 15:52

  argparse是 Python 的一个内置模块,用于编写用户友好的命令行接口。使用 argparse,你可以很容易地为 Python 脚本添加参数解析功能,使得脚本可以接受命令行选项和参数。学起来也比较简单,接下来我会详细讲解。

 

  在argparse里面,有位置参数和可选参数。位置参数是必不可少的,在命令行里面不可以缺少这个选项,并且这个选项前不需要加-或者--一类的符号;可选参数则可有可无,使用的时候需要在选项之前加上-或者--。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int,
                    help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
    print(f"the square of {args.square} equals {answer}")
elif args.verbosity == 1:
    print(f"{args.square}^2 == {answer}")
else:
    print(answer)

  在这个例子中,首先需要创建一个ArgumentParser的对象,然后可以通过add_argument添加需要的参数。"square"前面没有带-或者--,这是一个位置参数,而且-v或者--verbose则是可选参数。此外,还可以在add_argument当中设定type参数来指定参数的类型。在设定完参数之后,调用parse_args来完成参数的解析,之后就可以愉快地去解析具体参数的值了。

python demo.py 20 -v 1/python demo.py 20 --verbose 1/python demo.py -v 1 20/python demo.py --verbose 1 20
>>20^2 == 400
// 注意,位置参数的位置顺序是可以调换的。

python demo.py 20 -v 2/python demo.py 20 --verbose 2/python demo.py -v 2 20/python demo.py --verbose 2 20
>>the square of 20 equals 400

  

  也可以这样玩。

parser.add_argument("-v", "--verbosity", action='count',
                    help="increase output verbosity")
python demo.py 20 -v/python demo.py 20 -vv

  不少Linux的命令行都是可以通过这种方式来输出更加详细的信息,这样就不用手动指定参数了。不过这段代码依然有缺陷,来看看:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action='count',
                    help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity >= 2:
    print(f"the square of {args.square} equals {answer}")
elif args.verbosity >= 1:
    print(f"{args.square}^2 == {answer}")
else:
    print(answer)

  当我们指定参数-vvv或者-vvvv或者更多的v的时候,反而只能输出一个最简单的计算结果,所以代码的分支条件里面"=="改为">=",这样就大功告成啦。为了更加完美,还可以引入静默模式。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
                    help="display a square of a given number")
parser.add_argument("-v", "--verbosity", action='store_true',
                    help="increase output verbosity")
parser.add_argument('-q', '--quiet', action='store_true')
args = parser.parse_args()
answer = args.square**2

if args.quiet:
    print(answer)
elif args.verbosity:
    print(f"the square of {args.square} equals {answer}")
else:
    print(f"{args.square}^2 == {answer}")

  这样就有模有样了,命令行的基本功能也齐全了。还可以组合参数:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--verbosity", action='store_true',
                    help="increase output verbosity")
parser.add_argument('-q', '--quiet', action='store_true')
args = parser.parse_args()

if args.verbosity:
    print('v is enabled')
if args.quiet:
    print('q is enabled')
python demo.py -v/python demo.py -q/python demo.py -vq/python demo.py -qv

  看到这里的朋友可以点点赞或者分享给身边的朋友,以后会继续带来更多有关C++或者Python语言的有趣知识。

From:https://www.cnblogs.com/ChebyshevTST/p/18339116
本文地址: http://www.shuzixingkong.net/article/713
0评论
提交 加载更多评论
其他文章 Zabbix搭建
目录zabbix搭建1. 前置环境准备1.1 搭建LNMP2. zabbix准备工作2.1 安装php模块以及编译所需工具2.2 修改php配置2.3 编译安装zabbix2.3.1 下载tar包2.3.2 解压2.3.3 创建用户/组2.3.4 开始安装2.3.5 配置数据库3. 配置zabbix
Zabbix搭建 Zabbix搭建 Zabbix搭建
Kotlin 字符串教程:深入理解与使用技巧
Kotlin中的字符串用于存储文本,定义时使用双引号包围字符序列,如`var greeting = "Hello"`。Kotlin能自动推断变量类型,但在未初始化时需显式指定类型,如`var name: String`。可通过索引访问字符串元素,如`txt[0]`获取首字符。字符
Label Studio数据标注--通过源码安装
Label Studio是Heartex公司开发的一款在线数据标注工具,本文就介绍如何从github上clone源码安装Label Studio。
图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘
本文节选自清华大学出版社出版的图书《数据资产管理核心技术与应用》,作者为张永清等著。 从Spark 执行计划中获取数据血缘 因为数据处理任务会涉及到数据的转换和处理,所以从数据任务中解析血缘也是获取数据血缘的渠道之一,Spark 是大数据中数据处理最常用的一个技术组件,既可以做实时任务的处理,也可以
图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘 图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘 图书《数据资产管理核心技术与应用》核心章节节选-3.1.2. 从Spark 执行计划中获取数据血缘
我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效?
背景:最近在写一个H5页面项目,头部有个菜单栏,需要固定在顶部不动,但是滑动之后设置并没有生效,之前开发中也遇到过类似的固定失效的情况,就去详细了解了下有哪些可能导致固定定位失效的情况。希望有些场景能帮助到你。下面我总结和详细说明了会导致失效的情况,那么我们接着往下看...
我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效? 我菜单为什么跟着滑动了?!!—— 固定定位为什么会失效?
DASCTF2022.07赋能赛PWN部分WP
DASCTF2022.07赋能赛PWN部分WP eyfor 程序保护情况 64位ida逆向 可以看见是一个随机数的逻辑,只要我们猜不对4次就可以进入漏洞函数,但是我感觉这原本可能是==号,让用随机数的 那我们就4次不输入一个数就可以进入漏洞函数,这里注意这个a1就是我们进入漏洞函数之前要输入的值,可
DASCTF2022.07赋能赛PWN部分WP DASCTF2022.07赋能赛PWN部分WP DASCTF2022.07赋能赛PWN部分WP
.Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor
本文首先简单介绍了 Dockerfile 内容和常用命令;然后是在 Windows 环境 Docker desktop 的安装和配置;最后创建了 Web API 示例项目,并简单说明了从构建到推送至 Harbor 镜像仓库的步骤。
.Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor .Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor .Net 6.0 Web API 项目生成镜像并上传到私有仓库 Harbor
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景
本文介绍了在SemanticKernel/C#中如何使用Ollama中的对话模型与嵌入模型用于本地离线场景。
SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景 SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景 SemanticKernel/C#:使用Ollama中的对话模型与嵌入模型用于本地离线场景