python内置模块argparse的使用
官网文档
https://docs.python.org/3/howto/argparse.html # 简易教程
https://docs.python.org/3/library/argparse.html#module-argparse # 详细教程
add_argument()方法中的一些参数说明
add_argument('-f', '--foo') # 可选参数
add_argument('foo') # 位置参数
action #该action关键字参数指定的命令行参数应该如何处理
action = 'store' # 默认操作仅存储参数的值,可以不写
action = 'store_const' # 将存储由const关键字参数指定的值
action = 'store_true' # 这些是'store_const'分别存储值True和False的情况下使用
action = 'store_false'
action = 'append' # 存储一个列表,并将命令行的每个参数值附加到列表中
action = 'append_const' # 存储一个列表,并将const关键字参数指定的值附加到列表中,可用于多个参数需要将常量存储到同一列表,const默认参数为None
action = 'count' # 计算关键字参数出现的次数
action = 'extend' # 存储一个列表,并将每个参数值添加到列表中
nargs : 将单个命令行参数与要执行的单个操作相关联,并收集到一个列表中
nargs = N(一个整数) # nargs=2,命令行python test.py --foo a b 将a,b收集到一个列表中
nargs = ? # 表示从命令行使用一个参数,作为选项参数的值,如果命令行指定了参数的值则使用(python test.py --foo xx),如果不存在命令行参数(python test.py),使用default默认值,如果存在可选项参数(python test.py --foo),但是没有指定参数值,会使用const的值。
nargs = * # 存在的所有命令行参数都收集到一个列表中
nargs = + # 跟*用法一样,都会收集到一个列表中,但是如果没有命令行参数则会报错
default # 指定默认值
type # 指定类型 int float等
choices # 指定某些命令行参数应从一组受限制的值中选择,如果参数不是可接受的值一直,则报错
required=True # 指定参数值为必填
help #帮助信息说明
type指定值的类型
import argparse
parser = argparse.ArgumentParser()
# 用于指定程序愿意接受的命令行选项
# type用于指定类型
# parser.add_argument('square', help='echo the string you use here', type=int)
args = parser.parse_args()
print(args.square**2)
运行:
python test.py 4
结果:16
可选参数--
import argparse
parser = argparse.ArgumentParser()
# --表示可选参数
parser.add_argument('--verbosity', help='increase output verbosity')
args = parser.parse_args()
# 如果加了参数,那么就会执行这段代码
if args.verbosity:
print('verbosity turned on')
运行
python test.py --verbosity # 不会打印if语句中的代码,且会报错
python test.py --verbosity 4 # 加了参数所以会打印if语句中的代码
可参数中action指定store_true默认隐式传递True
import argparse
parser = argparse.ArgumentParser()
# action用来指定值,并将True分配给args.verbose
# 如果在指定程序的时候,你额外加了参数的话,那么就会报错
parser.add_argument('--verbose', help='increase output verbosity', action='store_true')
args = parser.parse_args()
if args.verbose:
print('verbosity turned on')
运行:
python test.py --verbose # 打印if语句中的代码
python test.py --verbose 1 # 则会报错,因为已经指定了默认值,加参数的话会报错
可选选项之简短选项
import argparse
parser = argparse.ArgumentParser()
# 参数一为参数二的简短缩写,执行程序时,直接使用-v,而不使用--verbose了
parser.add_argument('-v', '--verbose', help='increase output verbosity', action='store_true')
args = parser.parse_args()
if args.verbose:
print('verbosity turned on')
运行:
python test.py -v # 打印if语句的代码
结合位置参数和可选参数(可选参数中指定了默认值store_true即表示True)
import argparse
parser = argparse.ArgumentParser()
# 执行代码的时候需要输入参数
parser.add_argument('square', type=int, help='display a square of a given number')
# 执行代码的时候不需要输入参数,因为指定了默认值
parser.add_argument('-v', '--verbose', help='increase output verbosity', action='store_true')
args = parser.parse_args()
# 参数**2
answer = args.square**2
# 如果为真执行下面代码
if args.verbose:
print(f'the square of {args.square} equals {answer}')
# 否则执行下面代码
else:
print(answer)
运行:
python test.py 4 # 16
python test.py -v 4 # 4, 16 顺序无关紧要
python test.py 4 -v # 4, 16
结合位置参数和可选参数(没有指定默认值)
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('square', help='display a square of a given number', type=int)
parser.add_argument('-v', '--verbose', help='increase output verbose', type=int)
args = parser.parse_args()
answer = args.square**2
if args.verbose == 2:
print(f'the square of {args.square} equals {answer}')
elif args.verbose == 1:
print(f'{args.square}^2 == {answer}')
else:
print(answer)
运行:
python test.py 4 # 16 4被square接收了, -v是指定可选参数,没有用-v所以就不会使用,但是要知道不指定-v,则会有隐式的默认值None
python test.py 4 -v # 会报错,因为使用了-v,所以就要加参数
python test.py 4 -v 1 # 4^2 == 16
python test.py 4 -v 2 # the square of 4 equals 16
可选参数中指定choices选项来限制接收的参数
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('square', type=int, help='display a square of a given number')
parser.add_argument('-v', '--verbose', choices=[0, 1, 2], help='increase output verbose', type=int)
args = parser.parse_args()
answer = args.square**2
if args.verbose == 2:
print(f'the square of {args.square} equals {answer}')
elif args.verbose == 1:
print(f'{args.square}^2 == {answer}')
else:
print(answer)
运行:
python test.py 4 -v 0 # 16 , 因为-v的参数为0在choices里面,所以会执行else语句,起码不会报错了
python test.py 4 -v 3 # 会报错,因为-v的参数3,不在choices里面
可选参数中指定action="count"用来计算特定可选参数的出现次数,即把出现的次数当做参数传递
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('square', type=int, help='square number')
parser.add_argument('-v', '--verbose', action='count', help='verbose ok')
args = parser.parse_args()
answer = args.square**2
if args.verbose == 2:
print('the square of {} equals {}'.format(args.square, answer))
elif args.verbose == 1:
print('{}^2 == {}'.format(args.square, answer))
else:
print(answer)
运行:
python test.py 4 -v # 因为上面可选参数中指定了action='count', 所以这里的-v就表示出现了1次,即把1当做参数传递给verbose
python test.py 4 -vv # -vv表示出现了2次,即把2当做参数传递给了verbose
python test.pt 4 --verbose --verbose # 同上面-vv用法一致
python test.py 4 -v 1 # 报错,因为用了action='count',即把出现的次数当做参数传递给verbose,所以再传递参数的话就会报错
可选参数指定default默认值,使程序不使用可选参数时,做比较判断时不会报错
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('square', type=int, help='square number')
parser.add_argument('-v', 'verbose', action='count', default=0, help='verbose ok')
args = parser.parse_args()
answer = args.square**2
if args.verbose >= 2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbose >= 1:
print("{}^2 == {}".format(args.square, answer))
else:
print(answer)
python test.py 4 -vvv # the square of 4 equals 16
python test.py 4 -vvvv # the square of 4 equals 16
python test.py 4 # 16 这边要注意下,因为我们在可选参数中加了default默认值=0,所以不指定-v的时候,它不会报错,不然不加的话默认-v隐式的会有默认值None,None无法用比较符跟数值做比较
add_mutually_exclusive_group()用来解决多个可选参数中的冲突选项,即多个可选参数时,可用长格式选项和简写格式选项结合使用
import argparse
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-v', '--verbose', action='store_true')
group.add_argument('-q', '--quit', action='store_true')
parser.add_argument('x', type=int, help='the base')
parser.add_argument('y', type=int, help='the exponent')
args = parser.parse_args()
answer = args.x ** args.y
if args.quit:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
print("{}^{} == {}".format(args.x, args.y, answer))
运行:
python test.py 4 2 -v --quit
description描述信息,可通过python test.py --help查看
import argparse
parser = argparse.ArgumentParser(description="calculate X to the power of Y"))
group = parser.add_mutually_exclusive_group()
group.add_argument('-v', '--verbose', action='store_true')
group.add_argument('-q', '--quit', action='store_true')
parser.add_argument('x', type=int, help='the base')
parser.add_argument('y', type=int, help='the exponent')
args = parser.parse_args()
answer = args.x ** args.y
if args.quit:
print(answer)
elif args.verbose:
print("{} to the power {} equals {}".format(args.x, args.y, answer))
else:
print("{}^{} == {}".format(args.x, args.y, answer))
运行:
python test.py 4 2 -v --quit
python内置模块argparse的使用的更多相关文章
- python内置模块collections介绍
目录 python内置模块collections介绍 1.namedtuple 2.deque 3.defaultdict 4.OrderedDict 5.ChainMap 6.Counter 7.小 ...
- python内置模块(4)
这一部分是python内置模块系列的最后一部分,介绍了一些小巧有用的内置模块. 目录: 1.random 2.shelve 3.getpass 4.zipfile 5.tarfile 6.bisect ...
- Python学习笔记【第八篇】:Python内置模块
什么时模块 Python中的模块其实就是XXX.py 文件 模块分类 Python内置模块(标准库) 自定义模块 第三方模块 使用方法 import 模块名 form 模块名 import 方法名 说 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- python中argparse
python中argparse 在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有 ...
- Python内置模块与标准库
Python内置模块就是标准库(模块)吗?或者说Python的自带string模块是内置模块吗? 答案是:string不是内置模块,它是标准库.也就是说Python内置模块和标准库并不是同一种东西. ...
- python内置模块[re]
python内置模块[re] re模块: python的re模块(Regular Expression正则表达式)提供各种正则表达式的匹配操作,在文本解析.复杂字符串分析和信息提取时是一个非常有用的工 ...
- python内置模块[sys,os,os.path,stat]
python内置模块[sys,os,os.path,stat] 内置模块是python自带功能,在使用内置模块时,需要遵循 先导入在 使用 一.sys 对象 描述 sys.argv 命令行参数获取,返 ...
- Python内置模块和第三方模块
1.Python内置模块和第三方模块 内置模块: Python中,安装好了Python后,本身就带有的库,就叫做Python的内置的库. 内置模块,也被称为Python的标准库. Python 2.x ...
- python内置模块介绍(一)
本文主要介绍模块列表如下: os sys re time datetime random shutil subprocess os模块 os.getcwd() ...
随机推荐
- Oracle TNS 异常问题处理
今天下午快下班时同事找我说自己的性能测试Oracle数据库 连不上了. 然后自己连上去简单看了一下. 因为已经是事后了, 所以没有截图,只通过文字说明. 环境说明:Win2012r2 + Oracle ...
- SAP标准附件-GOS(generic object service)
标准附件功能显示需要用户是 A类型 对话用户 本文介绍一个Public Class :CL_GOS_DOCUMENT_SERVICE 该类包含了创建附件,注释,URL,个人注释等方法,这些方法中都会涉 ...
- git查看自己是从那个分支建的分支
可能发生的情况 很多时候,开始建分支的时候, 能够确认自己是那个分支建的,但是当写完功能之后, 再去回想,有时是忘记自己基于那个分支建的分支. 这时有一个命令的话就可以很快的定位了. 查看创建的分支来 ...
- 2021美亚杯团队赛write up
个人赛与团队赛下载文件解压密码:MeiyaCup2021 加密容器解密密码: uR%{)Y'Qz-n3oGU`ZJo@(1ntxp8U1+bW;JlZH^I4%0rxf;[N+eQ)Lolrw& ...
- Linux慢 进程kswapd0与events/0消耗大量CPU的问题 一次网站宕机的处理
今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了. 重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用.盯了有好十几分钟,主要消耗 CPU 的进程有两 ...
- 时不我待,拥抱趋势,开源IM项目OpenIM技术简介
坚持开源 开源的理念是基于共享.合作和透明的原则,将软件.代码等知识资源公开并允许他人使用.修改和重新分发,以促进创新和发展.以下是几个开源的优点: 创新:开源可以促进创新,通过让其他人改进或扩展已有 ...
- SqlSugar导航查询/多级查询
1.导航查询特点 作用:主要处理主对象里面有子对象这种层级关系查询 1.1 无外键开箱就用 其它ORM导航查询 需要 各种配置或者外键,而SqlSugar则开箱就用,无外键,只需配置特性和主键就能使用 ...
- Python自动化办公--Pandas玩转Excel数据分析【三】
相关文章: Python自动化办公--Pandas玩转Excel[一] Python自动化办公--Pandas玩转Excel数据分析[二] python处理Excel实现自动化办公教学(含实战)[一] ...
- C++ LibCurl实现Web隐藏目录扫描
LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP.FTP.SMTP.POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发 ...
- LeetCode刷题日记 2020/8/28
题目描述: 最长有效括号 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 ...