官方文档: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. BZOJ4621 Tc605(动态规划)

    容易发现最终序列所有数字的相对顺序不变,一个数字可能的覆盖范围由两边第一个比它大的数决定,且若不考虑次数限制所有这样的序列都可以变换得到.对于一个序列,其需要的最少变换次数显然就是覆盖了别的位置的数的 ...

  2. Luogu5283 十二省联考2019异或粽子(trie/可持久化trie+堆)

    做前缀异或和,用堆维护一个五元组(x,l,r,p,v),x为区间右端点的值,l~r为区间左端点的范围,p为x在l~r中最大异或和的位置,v为该最大异或和,每次从堆中取出v最大的元素,以p为界将其切成两 ...

  3. 【XSY2962】作业 数学

    题目描述 有一个递推式: \[ \begin{align} f_0&=1-\frac{1}{e}\\ f_n&=1-nf_{i-1} \end{align} \] 求 \(f_n\) ...

  4. edusoho -A5: ApiBundle UML

    edusoho -A5:  ApiBundle UML

  5. vue实战记录(一)- vue实现购物车功能之前提准备

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(一) GitHub:sue ...

  6. 第三十九篇-RecyclerView的使用

    RecyclerView介绍 RecyclerView的出现可以替代ListView,并且比ListView更高级且更具灵活性.如果有数据集合,其中的元素将因用户操作或网络事件而在运行时发生改变,请使 ...

  7. latex 一些使用

    texlive安装 https://blog.csdn.net/qq_38386316/article/details/80272396 管理员权限打开.bat 语言的安装可以减少 texwork 一 ...

  8. 关于访问Jira和Confluence服务越来越缓慢的解决办法阐述

    Jira和Confluence部署在同一台服务器上,跑一段时间后,发现访问jira和confluence时,打开越来越缓慢.这是因为根据主机物理内存不同,默认的java虚拟机内存也会不同(一个较低值) ...

  9. 2018-2019-2 《Java程序设计》第4周学习总结

    20175319 2018-2019-2 <Java程序设计>第4周学习总结 教材学习内容总结 第四周学习了如下内容: 子类与父类 子类的继承性 子类与对象 重写方法 super关键字 f ...

  10. 利用git提交代码

    一.首先需要下载git 查看电脑是否安装git,打开终端,输入git,回车如果输出如下,则代表已安装了git 如果未安装,则会输出: 按照提示输入:sudo apt-get install git即可 ...