argparse模块

  在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块。argparse模块能够根据程序中的定义从sys.argv中解析出来这些参数,并自动生成帮助和使用信息。

ArgumentParse解析器

  使用argparse解析命令行参数时,首先需要创建一个解析器:

import argparseparser = argparse.ArgumentParser()

  ArgumentParser类的初始化函数有多个参数,其中比较常用的是description,它是程序的描述信息,即帮助信息前面的文字。

添加参数选项

  为应用程序添加参数选项需要使用ArgrmentParser对象的add_argument方法,该方法的格式如下:

add_argument(name or flag...[, action ] [, nargs ] [, const ] [, default ] [, type ] [, choices ] [, required ] [,help ] [,metavar ] [, dest ]

  各个参数含义如下:

  • name/flags:参数的名字  
  • action:遇到参数时的动作,默认值时store。  
  • nargs:参数的个数,可以时具体的数字,或者是”+“号或者”*“号。其中”*”号表示0或者多个参数,“+”号表示1个或多个参数。  
  • const action 和 nargs:需要的常量值  
  • default:不指定参数时的默认值  
  • type:参数的类型  
  • choices:参数允许的值  
  • required:可选参数是否可以省略  
  • help:参数的帮助信息  
  • metavar:在usage说明中的参数名称  
  • dest:解析后的参数名称

action内置的6种动作:

store
# 保存参数值,可能会先将参数值转换成另一个数据类型。若没有显式指定动作,则默认为该动作。store_const
# 保存一个被定义为参数规格一部分的值,而不是一个来自参数解析而来的值。这通常用于实现非布尔值的命令行标记。store_ture/store_false
# 保存相应的布尔值。这两个动作被用于实现布尔开关。append
#将值保存到一个列表中。若参数重复出现,则保存多个值。append_const
#将一个定义在参数规格中的值保存到一个列表中。version
#打印关于程序的版本信息,然后退出

解析参数

  解析命令行参数需要用到AgrumentParser对象的parse_args方法,该方法返回一个NameSpace对象。获取对象后,参数值可以通过属性的方式进行访问。由于指定了默认值,那么直接运行,也不会报错

parser.add_argument('-host',action='store',dest='server',default='localhost',help='connect to host')
parser.add_argument('-p',action='store',dest='port',default='3306',help='the port to host')
parser.parse_args()# parser.parse_args() 存储的值
Namespace(port='3306', server='localhost')

  存贮布尔类型的值的时候action,存储为store_true类型。

  使用argparse进行参数解析还有另一个好处,它能够根据我们的选项定义自动生成帮助信息。(自动追加-h选项,打印帮助信息)

模仿MySQL客户端的命令参数  

import argparseparser = argparse.ArgumentParser(description='A Python-MySQL client')def getparser():parser.add_argument('--host',action='store',dest='host',required=True,help='connect to host')parser.add_argument('-u','--username',action='store',dest='user',required=True,help='user for login')parser.add_argument('-p','--password',action='store',dest='password',required=True,help='password to use when user connecting to server')parser.add_argument('-P','--port',action='store',dest='port',default=3306,type=int,help='port number to use for connection or 3306 or default')parser.add_argument('-v','--version',action='version',version='%(prog)s 0.1')return parser.parse_args()def main():parser = getparser()conn_args = dict(host=parser.host,username=parser.user,password=parser.password,port=parser.port)print(conn_args)if __name__ == '__main__':main()

PS:如果 port参数可以指定多个参数,那么可以添加 nargs='+'即可。

更详细的使用方法参考,戳我

  

转载于:https://www.cnblogs.com/zhichaoma/p/8001451.html

Python Argparse模块相关推荐

  1. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  2. python argparse模块详解_python学习之argparse模块

    一.介绍 argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数. 我们很多时候,需要用到解析命令行参 ...

  3. python argparse模块详解_python中argparse模块用法实例详解

    本文实例讲述了python中argparse模块用法.分享给大家供大家参考.具体分析如下: 平常在写命令行工具的时候,经常会带参数,所以用python中的argparse来实现. # -*- codi ...

  4. Python argparse模块详解

    文章目录 一.前言 二.简单介绍argparse 三.argparse使用 基本步骤 add_argument() 方法 示例 四.补充 action的可选参数     一.前言 在很多论文的源码中, ...

  5. python argparse模块详解_python自学argparse模块

    argparse模块 argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块 使用步骤import argparse  # 导入模块,这个没什么说的 ...

  6. python argparse模块用法实例详解

    转载自https://zhuanlan.zhihu.com/p/56922793 argsparse是python的命令行解析的标准模块,内置于python,不需要安装.这个库可以让我们直接在命令行中 ...

  7. Python argparse模块基本用法

    argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数. import argparsedef main():parser = argparse.ArgumentPars ...

  8. argparse 模块详解

    文章目录 1 argparse 模块简介 2 argparse 模块主要参数 2.1 可选参数 2.2 可选参数引用名 2.3 清除帮助中的参数名信息 2.4 必选参数设置 2.5 列表参数(多参数) ...

  9. python自学argparse模块

    argparse模块 argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块 使用步骤 import argparse # 导入模块,这个没什么说的 ...

最新文章

  1. ryu的防火墙功能 ryu.app.rest_firewall,配合mininet和open vswitch(OVS)
  2. 关于PHP中Session文件过多的问题
  3. 江苏省计算机学会科学技术奖,孙国梓
  4. (c#)数据结构与算法分析 --递归
  5. vmware--查看链接克隆依赖关系
  6. Linux vi格式化文件命令
  7. 【汇编语言】数据类型的匹配问题:自动匹配与手动匹配
  8. Android学习笔记:TabHost 和 FragmentTabHost(转)
  9. AVS软件解码器的优化
  10. SQL性能第1篇:关系优化
  11. 买茶叶想到的哪个比较便宜 x1/y1 x2/y2 x代表多少钱 y代表 多少克 无聊的试炼...
  12. C#将word转换为HTML格式
  13. 怎样登陆微信公众号?怎样登陆微信公众号后台?
  14. 简单好用的js 压缩工具
  15. 【小强推歌】---香港历年10大中文金曲 下载 1978-2002
  16. 新建xib适配iphone4尺寸的注意
  17. 深入类加载器-类加载器作用,类缓存、类加载器的层次结构、ClassLoader类介绍、代理模式之双亲委派机制
  18. 小米集团回应造车;移动公布1月份运营数据;中天科技拟回购公司股份;工信部发布春节流量数据...
  19. OpenJudge-005雇佣兵(解析)
  20. 国标GB28181安防摄像头如何通过视频流媒体服务器建设阳光考场?

热门文章

  1. 干货三:CountDownTimer倒计时工具类
  2. Snackbar-Android M新控件
  3. vs编译c语言文件不读取对象式宏,C代码的条编译宏windows的VS和linux下gcc编译不一样...
  4. 安卓UI图分离器(支持ios@2x3x图转成安卓xhdpi,xxhdpi图,最新支持拖入并自动解压.zip图片压缩包)
  5. Toast弹不出来之谜
  6. JavaScript最新手机号码、电话号码正则表达式
  7. 【分享】程序的开发与编写
  8. 树莓派4B安装系统及基础配置
  9. java if and_关于java:if语句中可以有两个条件吗
  10. android 自定义view 动画效果,Android自定义view----音乐播放动画