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语言的有趣知识。

argparse学习笔记的更多相关文章

  1. Python命令模块argparse学习笔记(二)

    argparse模块可以设置两种命令参数,一个是位置参数,一个是命令参数 位置参数 import argparse parser = argparse.ArgumentParser(descripti ...

  2. Python命令模块argparse学习笔记(一)

    首先是关于-h/--help参数的设置 description:位于help信息前,可用于描述helpprog:描述help信息中程序的名称epilog:位于help信息后usage:描述程序的用途a ...

  3. Python命令模块argparse学习笔记(四)

    默认参数 ArgumentParser.set_defaults(**kwargs) set_defaults()可以设置一些参数的默认值 >>> parser = argparse ...

  4. Python命令模块argparse学习笔记(三)

    参数组 ArgumentParser.add_argument_group(title=None, description=None) 默认情况下,当显示帮助消息时,ArgumentParser将命令 ...

  5. [编程基础] Python命令行解析库argparse学习笔记

    Python argparse教程展示了如何使用argparse模块解析Python中的命令行参数. 文章目录 1 使用说明 1.1 Python argparse可选参数 1.2 Python ar ...

  6. Python学习笔记-argparse模块

    Python学习笔记-argparse模块 optparseargparse 昨天学习了一个简单的端口扫描器的脚本,其中涉及到了optparse模块,网上关于此模块的介绍已有很多,但这个模块已经不更新 ...

  7. Noah的学习笔记之Python篇:命令行解析

    Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang  (http://www.cnblogs.com/noahzn/) ...

  8. tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)

    续集请点击我:tensorflow学习笔记——使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...

  9. Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)

    齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. (八十七)c#Winform自定义控件-朝上的瓶子

    官网 http://www.hzhcontrols.com/ 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kw ...

  2. Github Markdown 指定图片在光亮或暗黑模式展示

    Github 根据系统配置不同的主题模式: 如果想要在光亮模式和暗黑模式显示不同的主题的图片,比如以下就是同一个图片在暗黑模式和光亮模式下展示: 解决方案 在markdon 的图片链接后添加#gh-d ...

  3. nodejs koa框架下载和导入excel

    ac.js const service = require("../service/model.service"); const urlencode = require(" ...

  4. 使用 eBPF 在云中实现网络可观测性

    可观测性是一种了解和解释应用当前状态的能力,也是一种知道何时出现问题的方法.随着在 Kubernetes 和 OpenShift 上以微服务形式进行云部署的应用程序越来越多,可观察性受到了广泛关注.许 ...

  5. 如何解决Win10删除文件慢的办法

    问题:最近使用KMS激活了一些工具,今天删除不需要的文件时发现删除文件很慢很慢,删除一个几百k的文件都很慢. 解决办法通过控制面板→管理工具→服务→找到该进程并设为禁用就OK了.

  6. 使用shell脚本在Linux中管理Java应用程序

    目录 前言 一.目录结构 二.脚本实现 1. 脚本内容 2. 使用说明 2.1 配置脚本 2.2 脚本部署 2.3 操作你的Java应用 总结 前言 在日常开发和运维工作中,管理基于Java的应用程序 ...

  7. 调用支付JSAPI缺少参数:total_fee解决方法

    1.https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7 调用支付JSAPI缺少参数:total_fee 1.请检查预支付会话标识p ...

  8. spring与设计模式之三代理模式

    部分内容引用: https://blog.csdn.net/shulianghan/article/details/119798155 一.定义 1.1定义 对于现实生活中的代理,大家非常好理解.我们 ...

  9. Pycharm或cmd在Terminal中运行tensorboard、pip等python包

    这个主要是添加python包的路径到环境变量里 因为装了anaconda,所以我们要找的是对应虚拟环境里的包路径,一般是放在anaconda安装路径下的anaconda3\envs\环境名\Scrip ...

  10. 用基础Array数组实现动态数组、链表、栈和队列

    代码地址: https://gitee.com/Tom-shushu/Algorithm-and-Data-Structure.git 一.ArrayList自定义封装 package com.zho ...