使用步骤:

1:import argparse        #导入argparse模块

2:parser = argparse.ArgumentParser()        #创建实例

3:parser.add_argument()        #添加命令行选项

4:parser.parse_args()                #解析


 python的argparse模块add_argument详解

add_argument:读入命令行参数,该调用有多个参数
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

name or flags:是必须的参数,该参数接受选项参数或者是位置参数(一串文件名)

copy

  1. >>> parser.add_argument('-f', '--foo')    #选项参数
    >>> parser.add_argument('bar')        #位置参数

nargs: 当选项后接受多个或者0个参数时需要这个来指定
比如-u选项接受2个参数

>>> parser.add_argument('-u',nargs=2)
>>> parser.parse_args('-u a b'.split())
Namespace(u=['a', 'b'])

当选项接受1个或者不需要参数时指定nargs=’?',当没有参数时,会从default中取值。对于选项参数有一个额外的情况,就是出现选项而后面没有跟具体参数,那么会从const中取值

c

>>> parser.add_argument('-u',nargs='?')
>>> parser.parse_args(''.split())
Namespace(u=None)
>>> parser.parse_args('-u a'.split())
Namespace(u='a')  >>> parser.add_argument('-u',nargs='?',default='d')
>>> parser.add_argument('A',nargs='?',default='e')
>>> parser.parse_args(''.split())
Namespace(A='e', u='d')
>>> parser.parse_args('-u'.split())
Namespace(A='e', u=None)  >>> parser.add_argument('-u',nargs='?',default='d',const='s')
>>> parser.add_argument('A',nargs='?',default='T',const='P')
>>> parser.parse_args(''.split())
Namespace(A='T', u='d')
>>> parser.parse_args('-u'.split())
Namespace(A='T', u='s')
>>> parser.parse_args('A'.split())
Namespace(A='A', u='d')

而对于后面需要跟多个参数的情况(–foo a1 a2 a3…),则需要设置nargs=’*’copy

>>> parser.add_argument('-u',nargs='*')
>>> parser.parse_args('-u a b c d e'.split())
Namespace(u=['a', 'b', 'c', 'd', 'e'])

nargs=’+'也和nargs=’*'一样,但是有一个区别当’+'时少于1个参数(没有参数)位置参数会报错误

copy

>>> parser.add_argument('u',nargs='+')
>>> parser.parse_args(''.split())
usage: [-h] u [u ...]
: error: too few arguments

而‘*’会使用默认值

c

  1. >>> parser.add_argument('u',nargs='*',default='e')
    >>> parser.parse_args(''.split())
    Namespace(u='e')

default: 当参数需要默认值时,由这个参数指定,默认为None,当default=argparse.SUPPRESS时,不使用任何值

copy

>>> parser.add_argument('u',nargs='*',default=argparse.SUPPRESS)
>>> parser.parse_args(''.split())
Namespace()
  1. type: 使用这个参数,转换输入参数的具体类型,这个参数可以关联到某个自定义的处理函数,这种函数通常用来检查值的范围,以及合法性


>>> parser.parse_args('-u',type=int)
>>> parser.add_argument('f',type=file)
>>> parser.parse_args('-u 2 aa'.split())
Namespace(f='aa', mode 'r' at 0x8b4ee38>, u=2)

choices: 这个参数用来检查输入参数的范围

copy

  1. >>> parser.add_argument('-u',type=int,choices=[1,3,5])
    >>> parser.parse_args('-u 3'.split())
    Namespace(u=3)
    >>> parser.parse_args('-u 4'.split())
    usage: [-h] [-u {1,3,5}]
    : error: argument -u: invalid choice: 4 (choose from 1, 3, 5)

required: 当某个选项指定需要在命令中出现的时候用这个参数

  1. >>> parser.add_argument('-u',required=True)
    >>> parser.parse_args(''.split())
    usage: [-h] -u U
    : error: argument -u is required

help: 使用这个参数描述选项作用

view plaincopy

  1. >>> parser.add_argument('-u',required=True,default='wowo',help='%(prog)s for test sth(default: %(default)s)')
    >>> parser.print_help()                                                        usage: [-h] -u U  optional arguments:  -h, --help  show this help message and exit  -u U        for test sth(default: wowo)

dest: 这个参数相当于把位置或者选项关联到一个特定的名字

copy

  1. >>> parser.add_argument('--str',nargs='*')
    >>> parser.parse_args('--str a b c'.split())
    Namespace(str=['a', 'b', 'c'])  >>> parser.add_argument('--str',nargs='*',dest='myname')
    >>> parser.parse_args('--str a b c'.split())
    Namespace(myname=['a', 'b', 'c'])

metavar: 这个参数用于help 信息输出中

copy

>>> parser.add_argument('--str',nargs='*',metavar='AAA')
>>> parser.print_help()
usage: [-h] [--str [AAA [AAA ...]]]  optional arguments:  -h, --help            show this help message and exit  --str [AAA [AAA ...]]  >>> parser.add_argument('str',nargs='*',metavar='AAA')
>>> parser.print_help()
usage: [-h] [AAA [AAA ...]]  positional arguments:  AAA  optional arguments:  -h, --help  show this help message and exit


本文转载自http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21633169&id=4387657

转载于:https://blog.51cto.com/lzs66/1842682

python的argparse模块相关推荐

  1. python自学argparse模块

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

  2. python之Argparse模块

    argparse 模块可以轻松编写用户友好的命令行接口.程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数. argparse 模块还会自动生成帮助和使用手册 ...

  3. 【python之argparse模块学习】简单入门

    目录 0 前言 1 入门程序 2 参数 2.1 位置参数 2.2 可选参数 2.3 矛盾选项 3 总结 4 参考文献 0 前言 该模块地位: Python 标准库中推荐的命令行解析模块. 类比linu ...

  4. Python之argparse模块的使用

    我们在写python脚本的时候,有时候需要在运行的时候传入参数,而不是写死在程序里,这个时候就要用到argparse模块.argparse 是 Python 内置的一个用于命令项选项与参数解析的模块, ...

  5. python中argparse模块关于 parse_args() 函数详解(全)

    目录 前言 1. 函数讲解 2. 基本用法 3. 实战讲解 前言 原理:命令行解析使用argparse包 作用:命令行传参赋值 可用在机器学习深度学习 或者 脚本运行等 了解这个函数需要了解其背后的原 ...

  6. python中argparse模块

    参考官方文档https://docs.python.org/zh-cn/3/library/argparse.html#nargs python中参数解释器,使用流程: import argparse ...

  7. Python 中argparse模块的使用

    正文共495个字,预计阅读时间5分钟. Python解析命令行读取参数有两种方式:sys.argv和argparse 1.sys.argv 如果脚本很简单或临时使用,没有多个复杂的参数选项,可以直接利 ...

  8. python的argparse模块parse_known_args()方法的使用

    parse_known_args()方法的用处就是有些时候,你的选项配置可能不会在一个函数或包中调用完成.在很多时候,我们可能会需要根据一些输入的选项,比如在深度学习中,我们可能会根据传入的模型设置– ...

  9. python idls_Python argparse模块实现模拟 linux 的ls命令

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

最新文章

  1. Ext.NET加入自定义验证JS函数
  2. cnocr训练_cnocr: 极简的中文OCR Python包
  3. CiscoIOUKeygen
  4. 什么是RPC?RPC框架dubbo的核心流程
  5. STL--lower_bound()upper_bound();
  6. VC+MO2.0连接ArcSDE并且读出SDE中的空间数据(三)
  7. 剑指offer之树的子结构
  8. java中对象的初始化过程
  9. c语言程序女设计教学效果分析,C语言程序设计的教学论文
  10. [动态规划] uestc oj A - 男神的礼物
  11. 好用的pdf预览插件
  12. 立镖机器人浙江_立镖现身LogiMAT 2019 彰显中国仓储分拣技术
  13. cublas中执行矩阵乘法运算的函数 首先要注意的是cublas使用的是以列为主的存储方式,和c/c++中的以行为主的方式是不一样的。处理方法可参考下面的注释代码
  14. 2021-06-27 方法的调用
  15. 锐浪报表,用脚本处理字段
  16. linux双网卡连不上网,linux 双网卡配置问题
  17. 金蝶服务器修改ip,金蝶客户端修改服务器ip地址
  18. 浅谈CMMI3认证从评估前准备到正式评估的全部过程
  19. 【第一组】第十一次例会纪要
  20. VUE制作谷歌浏览器多类型截屏、抓取信息的插件

热门文章

  1. FZOJβ #31.字符串
  2. 在spring配置中出现的问题,解决方案
  3. ovs 下流表port 1进入,port 1出去
  4. Sublime Text快捷键去除空白行
  5. 【2017-05-19】WebForm复合控件、用DropDownList实现时间日期选择。
  6. android菜鸟学习笔记13----Android控件(二) 自定义控件简单示例
  7. 使用FreeImage加载纹理
  8. 怎么解决web service circular reference 问题
  9. STM32之独立看门狗例程
  10. STM32之DMA原理