argparse模块的概念,用法及实际应用是什么
Admin 2022-11-01 群英技术资讯 887 次浏览
在实际应用中,我们有时候会遇到“argparse模块的概念,用法及实际应用是什么”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“argparse模块的概念,用法及实际应用是什么”文章能帮助大家解决问题。argsparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。
官方文档的位置:【https://docs.python.org/zh-cn/3/library/argparse.html】
在这里我们利用git来演示命令行运行
git -h git -version git show
1.导包: import argparse 2.创建对象: parser = argparse.ArgumentParser() 3.添加参数: parser.add_argument() 4.解析参数: parser.parse_args()
parser = ArgumentParser(prog=None, usage=None,description=None, epilog=None, parents=[],formatter_class=argparse.HelpFormatter, prefix_chars='-',fromfile_prefix_chars=None, argument_default=None,conflict_handler='error', add_help=True)
参数说明:
add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
参数说明:
name or flags:参数有两种,可选参数和位置参数。parse_args()运行时,会用-来认证可选参数,剩下的即为位置参数。位置参数必选,可选参数可选# 可选参数
parser.add_argument("-f", "--foo")
# 位置参数
parser.add_argument("bar") # 位置参数在运行时一定要输入
action:动作,argparse内置6种动作可以在解析到一个参数时进行触发store:保存参数值,可能会先将参数值转换成另一个数据类型。默认动作为这个store_const:保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记stroe_true/store_false:保存相应的布尔值,这两个动作被用于实现布尔开关append:将值保存到一个列表中。若参数重复出现,则保存多个值append_const:将一个定义在参数规格中的值保存到一个列表中version:打印关于程序的版本信息,然后退出parse.add_argument('--version',action = 'version',version = '%(prog)s2.0')
nargs:参数的数量const获得,然后从default获得参数的几种写法:
python py.py -i 1 # 使用空格分开 python py.py --integer=1 # 长选项使用等号分开 python py.py -i1 # 短选项可以写一起
args = parser.parse_args() # 括号里面可以传入命令行的参数
args_ = parser.parse_args("-i=1".split("="))
我们可以创建一个模板:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo01.py"
__time__ = "2022/6/16 17:12"
__email__ = "liu.zhong.kun@foxmail.com"
from typing import Callable
from functools import wraps
import sys, argparse
def terminal(param: bool = False): # 判断是否要使用命令行参数
def get_params(fun: Callable):
if param:
parser = argparse.ArgumentParser(description="help document")
"---------------------------------------------------------------"
# 如果需要从命令行传入参数时,就在这里添加
"---------------------------------------------------------------"
args = parser.parse_args()
else:
args = None
@wraps(fun)
def inner():
ret = fun(args) # 可能在传参数是还要进行其他的初始化操作
return ret
return inner
return get_params
@terminal() # 使用装饰器
def main(args):
print(args)
if __name__ == "__main__":
main()
sys.exit(0)
使用案例,创建一个程序,可以连接邮箱的SMTP服务
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = "A.L.Kun"
__file__ = "demo01.py"
__time__ = "2022/6/16 17:12"
__email__ = "liu.zhong.kun@foxmail.com"
from smtplib import SMTP
from typing import Callable
from functools import wraps
import sys, argparse
def terminal(param: bool = False):
def get_params(fun: Callable):
if param:
parser = argparse.ArgumentParser(description="help document")
"---------------------------------------------------------------"
parser.add_argument('--version', "-v", action='version', version='%(prog)s 2.0')
parser.add_argument("-u", "--username", type=str, help="Enter the SMTP server account", required=True)
parser.add_argument("-p", "--password", type=str, help="Enter the SMTP server password", required=True)
"---------------------------------------------------------------"
args = parser.parse_args()
else:
args = None
@wraps(fun)
def inner():
ret = fun(args)
return ret
return inner
return get_params
@terminal(True)
def main(args):
smtp = SMTP('smtp.qq.com')
smtp.login(args.username, args.password)
smtp.quit()
smtp.close()
if __name__ == "__main__":
main()
sys.exit(0)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要为大家介绍了用来将对象持久化的python pickle模块的用例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
我们需要使用到图片素材的场景很多,但是很多素材都有水印,而一张张去除水印是工作量大。对此,这篇文章小编就给大家分享如何用python实现图片批量去水印的方法,下面我们一起来看看是怎样做的吧。
这篇文章主要介绍了TensorFlow如何指定GPU训练模型,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
索引有助于更快地获取信息,如果没有索引,必须遍历整个表,就会很麻烦。在python中,也有对列表做索引的函数,就是index() 函数,本文具体介绍具体index() 函数及其如何使用。
Python编程获取终端命令行参数示例,获取终端命令行参数,通过使用 sys.argv实现,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008