官方文档:https://docs.python.org/zh-cn/3.7/library/argparse.html?highlight=argparse#module-argparse

argparse 模块可以编辑用户友好的命令行接口

import argparse

"""
获取一个整数数列并计算合计或者最大值
""" parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)') args = parser.parse_args()
print(args.accumulate(args.integers))

1.创建一个解析器

  parser = argparse.ArgumentParser(description='Process som integers.')

  ArgumentParser对象包含将命令行解析成Python数据类型所需的全部信息

"""Object for parsing command line strings into Python objects.
  • prog - 程序的名称(默认:sys.argv[0]
  • usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
  • description - 在参数帮助文档之前显示的文本(默认值:无)
  • epilog - 在参数帮助文档之后显示的文本(默认值:无)
  • parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
  • formatter_class - 用于自定义帮助文档输出格式的类
  • prefix_chars - 可选参数的前缀字符集合(默认值:'-')
  • fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None
  • argument_default - 参数的全局默认值(默认值: None
  • conflict_handler - 解决冲突选项的策略(通常是不必要的)
  • add_help - 为解析器添加一个 -h/--help 选项(默认值: True
  • allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True
"""

2.添加参数

  给ArgumentParser添加程序参数是通过调用add_argument()方法完成的,通常这些调用指定ArgumentParser如何过去命令行参数并将其转化为对象。这些信息在parse_args()调用时存储和使用

parser.add_argument('integers',metavar='N', type=int, nargs='+', 
  help='an integer for the accumulator') parser.add_argument('--sum',dest='accumulate', action='store_const',
  const=sum, default=max, help='sum the integers(default: find the max)')

 当调用parser.parse_args()将返回一个具有integers和accumulate两个属性的对象。integers属性将是一个包含一个或者多个整数的列表,而accumulate 属性当命令行中指定了 --sum参数时,将是sum()函数,否则则是max()函数。

  add_argument()方法:

name or flags - Either a name or a list of option strings, e.g. foo or -f, --foo.
action - 将命令行参数和操作关联
  操作:
    store:默认操作,将参数存储
      parser.add_argument('--foo')
      parser.parse_args('--foo 1'.split())
      ->Namespace(foo='1')
    store_const:这个操作将存储const关键字指定的值
      parser.add_argument('--foo', action='store_const', const=42)
      parser.parse_args(['--foo'])
      ->Namespace(foo=42)
    store_true & store_false:这两个操作是store_const中的特殊操作,将创建默认的值:False/True
      parser.add_argument('--foo',action='store_true')
      parser.add_argument('--bar',action='store_false')
      parser.add_argument('--baz',action='store_false')
      parser.parse_args('--foo --bar'.split())
      ->Namespace(foo=True,bar=False,baz=True)
    append:这个操作将命令行参数存储为一个集合
      parser.add_argument('--foo',action='append')
      parser.parse_args('--foo 1 --foo 2'.split())
      ->Namespace(foo=['1','2,])
    append_const:这将存储一个列表,并将const关键字参数指定的值附加到该列表。
            (注意,const关键字参数默认为none。)当多个参数需要将常量存
             储到同一列表时,“append-const”操作通常很有用
      parser.add_argument('--str', dest='types', action='appent_const',const=str)
      parser.add_argument('--int', dest='types', action='append_const',const=int)
      parser.parse_args('--str --int'.split())
      ->Namespace(types=[<class 'str'>,<class 'int'>])
    count:统计命令行参数中出现的次数
      parser.add_argument(‘--verbose','-v',action='count')
      parser.parse_args(['-vvv'])
      ->Namespace(verbose=3). nargs - 将不同数量的命令行参数与单个操作关联.
     parser.add_argument('--foo',nargs=2)
     parser.add_argument('bar',nargs=1)
     parser.parse_args('c --foo a b'.split())
     ->Namespace(bar=['c'],foo=['a','b'])
const - 某些action和nargs选项要求的常数值。
default - 如果命令行中没有出现该参数时的默认值。
type - 命令行参数应该被转换成的类型。
choices - 参数可允许的值的一个容器。
required - 该命令行选项是否可以省略(只针对可选参数)。
help - 参数的简短描述。
metavar - 参数在帮助信息中的名字。
dest - 给parse_args()返回的对象要添加的属性名称。

 

3.解析参数

  ArgumentParser通过parser_args()方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用响应的操作。 大多数情况下,将常见一个Namespace对象 

parser.parse_args(['--sum','','-1',''])
->Namespace(accumulate=<built -in function sum>, integers=[7,-1,42])

  在脚本中parse_args()方法是不用带参数的,而是自动从sys.argv中确定命令行参数

其他博客:https://www.cnblogs.com/piperck/p/8446580.html

python-argparse使用的更多相关文章

  1. python argparse用法总结

    转:python argparse用法总结 1. argparse介绍 argparse是python的一个命令行解析包,非常适合用来编写可读性非常好的程序. 2. 基本用法 prog.py是我在li ...

  2. Python argparse 模块

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

  3. python argparse sys.argv

    python argparse sys.argv class WeiLearningArgumentParser(argparse.ArgumentParser): def __init__(self ...

  4. python - argparse 模块学习

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

  5. Python argparse 处理命令行小结

    Python argparse 处理命令行小结 1. 关于argparse是python的一个命令行解析包,主要用于处理命令行参数 2. 基本用法test.py是测试文件,其内容如下: import ...

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

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

  7. Python argparse

    http://songpengfei.iteye.com/blog/1440158 https://docs.python.org/2/library/argparse.html http://sta ...

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

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

  9. Python argparse用法

    import argparse import sys parser = argparse.ArgumentParser(description='this is for test.') parser. ...

  10. Python Argparse模块

    argparse模块 在Python中,argparse模块是标准库中用来解析命令行参数的模块,用来替代已经过时的optparse模块.argparse模块能够根据程序中的定义从sys.argv中解析 ...

随机推荐

  1. hMailServer相关视频教程

    来源:https://www.hmailserver.org/viewtopic.php?f=4&t=34

  2. Nginx 请求的11个阶段

    48 1:当请求进入Nginx后先READ REQUEST HEADERS 读取头部 然后再分配由哪个指令操作 2:Identity 寻找匹配哪个Location  3:Apply Rate Limi ...

  3. [BZOJ 3992] [SDOI 2015] 序列统计

    Description 传送门 Solution [一] 设 \(f[i][j]\) 表示前 \(i\) 个数的乘积在模 \(p\) 意义下等于 \(j\) 的方案数,有 \[ f[i][j]=\su ...

  4. [九省联考2018]IIIDX

    题目描述 这一天,Konano接到了一个任务,他需要给正在制作中的游戏<IIIDX>安排曲目的解锁顺序.游戏内共有n首曲目 ,每首曲目都会有一个难度d,游戏内第i首曲目会在玩家Pass第t ...

  5. CAN总线报文浅析

    CAN的报文格式 在总线中传送的报文,每帧由7部分组成.CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位. 在标准格式中,报文的起始位称为帧起始(S ...

  6. JDK源码分析(7)String

    String String表示字符串,Java中所有字符串的字面值都是String类的实例,例如"ABC".字符串是常量,在定义后不能被改变,字符串缓冲区支持可变的字符串.因为St ...

  7. 题解-洛谷P1184 高手之在一起

    https://www.luogu.org/problemnew/show/P1184 (题目出处) 见到地名,自然就想到字符串了.可以从第一天开始,将她的位置与高手方便取得地方一一比较,(char字 ...

  8. (二分查找 结构体) leetcode33. Search in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  9. c语言中堆栈和静态空间

    什么是堆空间.栈空间与静态空间 堆空间:由程序员自己分配空间,如malloc需要指定分配多少个多大的字节空间,不用的时候需要自己释放 栈空间:栈空间是由系统自动分配与释放,如int,char等大小都已 ...

  10. pandas的分布式执行框架之modin

    Scale your pandas workflows by changing one line of code       To use Modin, replace the pandas impo ...