博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-argparse使用
阅读量:5976 次
发布时间:2019-06-20

本文共 3741 字,大约阅读时间需要 12 分钟。

官方文档:

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.
  • - 程序的名称(默认:sys.argv[0]
  • - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
  • - 在参数帮助文档之前显示的文本(默认值:无)
  • - 在参数帮助文档之后显示的文本(默认值:无)
  • - 一个 对象的列表,它们的参数也应包含在内
  • - 用于自定义帮助文档输出格式的类
  • - 可选参数的前缀字符集合(默认值:'-')
  • - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None
  • - 参数的全局默认值(默认值: None
  • - 解决冲突选项的策略(通常是不必要的)
  • - 为解析器添加一个 -h/--help 选项(默认值: True
  • - 如果缩写是无歧义的,则允许缩写长选项 (默认值: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=[
,
])     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','7','-1','42'])->Namespace(accumulate=
, integers=[7,-1,42])

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

 

其他博客:

转载于:https://www.cnblogs.com/nxzblogs/p/10649007.html

你可能感兴趣的文章
怎么看自己服务器的带宽?
查看>>
go的错误处理
查看>>
apache2.4.4的安装过程
查看>>
php5.3安装oracle的扩展oci8与pdo_oci
查看>>
发送超长短信的协议格式
查看>>
CentOS 6.x 快速安装L2TP ***
查看>>
mysql主主复制(双主复制)配置步骤
查看>>
一篇文章能够看懂基础源代码之JAVA篇
查看>>
什么是大数据技术架构
查看>>
【分享】如何救援記憶卡中誤刪的資料
查看>>
北方计算机专修学院“展示自我 秀出风采” 网页创意设计大赛成功举办
查看>>
DNS解析相关实验:7台主机的恩怨情仇
查看>>
Goldengate双向复制配置
查看>>
Oracle官方内部MAA教程
查看>>
DNS相关配置
查看>>
Nginx-location配置
查看>>
扫描线
查看>>
设计模式--模板方法(Template Method)
查看>>
引入CSS的方式有哪些?link和@import的有何区别应如何选择【转载】
查看>>
MariaDB 和 MySQL 性能测试比较
查看>>