argparse模块

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

ArgumentParse解析器

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

import argparse

parser = 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 argparse

parser = 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='+'即可。

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

  

 
 
 

Python Argparse模块的更多相关文章

  1. Python argparse 模块

    Python argparse 模块 test.py: import argparse argparser = argparse.ArgumentParser(add_help=False) argp ...

  2. python - argparse 模块学习

    python - argparse 模块学习 设置一个解析器 使用argparse的第一步就是创建一个解析器对象,并告诉它将会有些什么参数.那么当你的程序运行时,该解析器就可以用于处理命令行参数. 解 ...

  3. python argparse模块解析命令行选项简单使用

    argparse模块的解析命令行选项简单使用 util.py #!/usr/bin/env python # coding=utf-8 import argparse parser = argpars ...

  4. python argparse模块:命令行选项及参数解析

    位置参数:给一个例子: import argparse parser = argparse.ArgumentParser() parser.add_argument("echo") ...

  5. Python argparse模块实现模拟 linux 的ls命令

    python 模拟linux的 ls 命令 sample: python custom_ls.py -alh c:/ 选项: -a ,--all 显示所有文件,包括'.'开头的隐藏文件 -l  列表显 ...

  6. python argparse模块--转载

    add_argument:读入命令行参数,该调用有多个参数 ArgumentParser.add_argument(name or flags…[, action][, nargs][, const] ...

  7. python argparse模块的使用

    import argparse def get_parse(): # 初始化 parse = argparse.ArgumentParser() # 添加选项,类型为str,默认为空 parse.ad ...

  8. Python标准模块--argparse

    1 模块简介 你一定很奇怪Python是如何命令行中的变量的吧?argparse就是用来解决这个问题的,argparse是optparse的替代. 2 模块使用 2.1 开始 我发现解释一个编程的概念 ...

  9. Python解析命令行读取参数 -- argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...

随机推荐

  1. 图解HTTP,TCP,IP,MAC的关系

    入门 用户发了一个HTTP的请求,想要访问我们网站的首页,这个HTTP请求被放在一个TCP报文中,再被放到一个IP数据报中,最终的目的地就是我们的115.39.19.22. 进阶 IP数据报其实是通过 ...

  2. 分布式系统消息中间件——RabbitMQ的使用思考篇

    分布式系统消息中间件--RabbitMQ的使用思考篇 前言     前面的两篇文章分布式系统消息中间件--RabbitMQ的使用基础篇与分布式系统消息中间件--RabbitMQ的使用进阶篇,我们简单介 ...

  3. ASP.NET Core 添加区域步骤(详细)

    1 前言 早就想总结一下,但是没时间,这次有时间了,就详细的把步骤写出来. 2 步骤 2.1 添加区域 右键项目->添加->区域,如图1: 区域名称:Ceshi 添加完之后解决方案管理器会 ...

  4. win 2008 R2 或以上版本,只有C盘情况下,PHP上传文件,显示不了解决办法

    主要问题:因为没权限 解决办法:给C:\Windows\Temp 加上IIS账户读写权限

  5. (通用版)salesforce中soql及sosl的伪‘Like’模糊检索

    salesforce里有soql.sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name.Id:对于自定义添加的字段如:Message__c.Note__ ...

  6. Intellij Idea 教程

    Intellij Idea 教程 [涵盖安装.配置.常见问题&技巧.Maven.Git.Tomcat.快捷键.项目配置等] 目录 入门............................. ...

  7. Bootstrap 栅格 样式 组件 插件

    -----------------------------起先是我们造成习惯,后来是习惯造成我们. day 51 Bootstrap  官方网站:   bootcss.com/ <!DOCTYP ...

  8. Minesweeper

    你玩过扫雷吗?这个可爱的小游戏带有一个我们记不住名字的操作系统.游戏的目标是找到所有地雷在M x N场中的位置.游戏在一个正方形中显示一个数字,它告诉你在这个正方形附近有 多少个地雷.每个方块最多有八 ...

  9. Mysql 索引问题集锦

    一.Mysql 中的索引 索引:顾名思义用来检索.查找数据的key (字段) 几种Mysql 中的常见索引分类:普通索引(联合索引).唯一索引.主键索引.全文索引 优点:使得查询数据变快 缺点:更新数 ...

  10. 【学习总结】Markdown 使用的正确姿势

    参考资料:Learning-Markdown 入门参考 注:原博可能对GitHub中的Markdown格式更适用. 有时间可以再GitHub中尝试并写一篇相关攻略. ps:在王熊猫的GitHub里也有 ...