以下内容主要来自:http://wiki.jikexueyuan.com/project/explore-python/Standard-Modules/argparse.html

argparse 使用

简单示例

我们先来看一个简单示例。主要有三个步骤:

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数
  • 使用 parse_args() 解析添加的参数

示例:

  1. # -*- coding: utf-8 -*-
  2.  
  3. import argparse
  4.  
  5. parser = argparse.ArgumentParser()
  6. parser.add_argument('integer', type=int, help='display an integer')
  7. args = parser.parse_args()
  8.  
  9. print(args.integer)

将上面的代码保存为文件 argparse_usage.py,在终端运行,结果如下:

  1. $ python argparse_usage.py
  2. usage: argparse_usage.py [-h] integer
  3. argparse_usage.py: error: too few arguments
  4.  
  5. $ python argparse_usage.py abcd
  6. usage: argparse_usage.py [-h] integer
  7. argparse_usage.py: error: argument integer: invalid int value: 'abcd'
  8.  
  9. $ python argparse_usage.py -h
  10. usage: argparse_usage.py [-h] integer
  11.  
  12. positional arguments:
  13. integer display an integer
  14.  
  15. optional arguments:
  16. -h, --help show this help message and exit
  17.  
  18. $ python argparse_usage.py 10
  19. 10

定位参数

上面的示例,其实就展示了定位参数的使用,我们再来看一个例子 - 计算一个数的平方:

  1. # -*- coding: utf-8 -*-
  2.  
  3. import argparse
  4.  
  5. parser = argparse.ArgumentParser()
  6. parser.add_argument("square", help="display a square of a given number", type=int)
  7. args = parser.parse_args()
  8. print(rgs.square**2)

将上面的代码保存为文件 argparse_usage.py,在终端运行,结果如下:

  1. $ python argparse_usage.py 9
  2. 81

可选参数

现在看下可选参数的用法,所谓可选参数,也就是命令行参数是可选的,废话少说,看下面例子:

  1. # -*- coding: utf-8 -*-
  2.  
  3. import argparse
  4.  
  5. parser = argparse.ArgumentParser()
  6.  
  7. parser.add_argument("--square", help="display a square of a given number", type=int)
  8. parser.add_argument("--cubic", help="display a cubic of a given number", type=int)
  9.  
  10. args = parser.parse_args()
  11.  
  12. if args.square:
  13. print(args.square**2)
  14.  
  15. if args.cubic:
  16. print(args.cubic**3)

将上面的代码保存为文件 argparse_usage.py,在终端运行,结果如下:

  1. $ python argparse_usage.py --h
  2. usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
  3.  
  4. optional arguments:
  5. -h, --help show this help message and exit
  6. --square SQUARE display a square of a given number
  7. --cubic CUBIC display a cubic of a given number
  8.  
  9. $ python argparse_usage.py --square 8
  10. 64
  11.  
  12. $ python argparse_usage.py --cubic 8
  13. 512
  14.  
  15. $ python argparse_usage.py 8
  16. usage: argparse_usage.py [-h] [--square SQUARE] [--cubic CUBIC]
  17. argparse_usage.py: error: unrecognized arguments: 8
  18.  
  19. $ python argparse_usage.py # 没有输出

混合使用

定位参数和选项参数可以混合使用,看下面一个例子,给一个整数序列,输出它们的和或最大值(默认):

  1.  
  1. import argparse
  2.  
  3. parser = argparse.ArgumentParser(description='Process some integers.')
  4. parser.add_argument('integers', metavar='N', type=int, nargs='+',
  5. help='an integer for the accumulator')
  6. parser.add_argument('--sum', dest='accumulate', action='store_const',
  7. const=sum, default=max,
  8. help='sum the integers (default: find the max)')
  9.  
  10. args = parser.parse_args()
  11. print(args.accumulate(args.integers))

结果:

  1. $ python argparse_usage.py
  2. usage: argparse_usage.py [-h] [--sum] N [N ...]
  3. argparse_usage.py: error: too few arguments
  4. $ python argparse_usage.py 1 2 3 4
  5. 4
  6. $ python argparse_usage.py 1 2 3 4 --sum
  7. 10

add_argument() 方法

add_argument() 方法定义如何解析命令行参数:

  1. ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

每个参数解释如下:

  • name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo。
  • action - 命令行遇到参数时的动作,默认值是 store。
    • store_const,表示赋值为const;
    • append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
    • append_const,将参数规范中定义的一个值保存到一个列表;
    • count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
  • nargs - 应该读取的命令行参数个数,可以是具体的数字,或者是?号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
  • const - action 和 nargs 所需要的常量值。
  • default - 不指定参数时的默认值。
  • type - 命令行参数应该被转换成的类型。
  • choices - 参数可允许的值的一个容器。
  • required - 可选参数是否可以省略 (仅针对可选参数)。
  • help - 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
  • metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
  • dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.

python学习之argparse模块的使用的更多相关文章

  1. python学习之argparse模块

    python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...

  2. Python学习 Part4:模块

    Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...

  3. Python学习day19-常用模块之re模块

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  4. Python学习day18-常用模块之NumPy

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  5. python学习之random模块

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  6. Python学习之argparse

    http://www.2cto.com/kf/201412/363654.html https://docs.python.org/3.4/howto/argparse.html# 一.简介: arg ...

  7. Python学习笔记之模块与包

    一.模块 1.模块的概念 模块这一概念很大程度上是为了解决代码的可重用性而出现的,其实这一概念并没有多复杂,简单来说不过是一个后缀为 .py 的 Python 文件而已 例如,我在某个工作中经常需要打 ...

  8. Python学习笔记-常用模块

    1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...

  9. Python学习笔记1—模块

    模块的使用 引用模块的两种形式 形式一: import module_name 形式二: from module1 import module11   (module11是module的子模块) 例: ...

随机推荐

  1. 【bzoj5210】最大连通子块和 树链剖分+线段树+可删除堆维护树形动态dp

    题目描述 给出一棵n个点.以1为根的有根树,点有点权.要求支持如下两种操作: M x y:将点x的点权改为y: Q x:求以x为根的子树的最大连通子块和. 其中,一棵子树的最大连通子块和指的是:该子树 ...

  2. java 表单验证

    java 表单验证 1.思路:通过表单选择器,表单属性过滤器提取每个表单提交的值,进行验证 2.实现:javascript通过 onSubmit()事件,判断,返回值false不提交,返回true提交 ...

  3. 牛客OI赛制测试赛3 解题报告

    前话: 话说考试描述:普及难度. 于是想在这场比赛上涨点信心. 考出来的结果:Point:480     Rank:40 然而同机房的最好成绩是 510. 没考好啊!有点炸心态,D题一些细节没有注意, ...

  4. c++11 类默认函数的控制:"=default" 和 "=delete"函数

    c++11 类默认函数的控制:"=default" 和 "=delete"函数 #define _CRT_SECURE_NO_WARNINGS #include ...

  5. Vue使用SCSS进行模块化开发

    原文地址:http://www.cnblogs.com/JimmyBright/p/7761531.html 个人认为scss最大的好处就是能将css属性设置为变量,这样让css一键更换主题成为可能. ...

  6. php 百家姓

    private $surname = array('赵','钱','孙','李','周','吴','郑','王','冯','陈','褚','卫','蒋','沈','韩','杨','朱','秦','尤' ...

  7. Maven问题合集

    背景:总结maven使用过程中的相关问题,方便以后查询! 1 问题汇总 今天在导入github上下载的maven项目时候,出现了一堆错误,一时间不知道该如何下手. 根据错误提示,发现是一些依赖的jar ...

  8. mac go2shell 安裝

    配合Finder打开Finder,按住command键,拖动Go2Shell的图标到Finder菜单就可以在Finder快捷打开Go2Shell了

  9. Azure 上SQL Database(PaaS)Time Zone时区问题处理(进阶篇)

    通常ISV在面对本地客户时对时间相关的处理,一般都时区信息都是不敏感的.但是现在云的世界里为了让大家把时间处理的方式统一起来,云上的服务都是以UTC时间为准的,现在如果作为一个ISV来说就算你面对的客 ...

  10. golang 中的 time 包的 Ticker

    真实的应用场景是:在测试收包的顺序的时候,加了个 tick 就发现丢包了 那么来看一个应用例子: package main import ( "fmt" "runtime ...