开发者社区> 毛球饲养员> 正文

python argparse

简介: argparse argparse – Parser for command-line options, arguments and sub-commands argparse – 就是python用于解析命令行选项,参数和子命令的一个子模块。
+关注继续查看

argparse

argparse – Parser for command-line options, arguments and sub-commands
argparse – 就是python用于解析命令行选项,参数和子命令的一个子模块
Python 也有第三方的库可用于命令行解析,而且功能也更加强大,比如 docoptClick。不过这些我也没有用过呢。
学习这个子模块的目的就是为了使用命令行改变参数,一次可以执行不同参数的多个程序,调参就会很方便。

3. argparse-命令行选项与参数解析


argparse模块作为optparse的一个替代被添加到Python2.7。argparse的实现支持一些不易于添加到optparse以及要求向后不兼容API变化的特性,因此以一个新模块添加到标准库。
argparse可以提供支持位置参数、子命令、必须选项、”/f”和”+rgb”等选项语法、零个或多个或者一个或多个的参数选项等其他更加丰富灵活的用法。

与optparse相比较

Why use argparse rather than optparse?
argparse的API类似于optparse,甚至在很多情况下通过更新所使用的类名和方法名,使用argparse作为一个简单的替代。然而,有些地方在添加新特性时不能保持直接兼容性。

设置一个解析器

使用argparse的第一步就是创建一个解析器对象,并告诉它将会有些什么参数。那么当你的程序运行时,该解析器就可以用于处理命令行参数。
解析器类是 ArgumentParser 。构造方法接收几个参数来设置用于程序帮助文本的描述信息以及其他全局的行为或设置。

import argparse
parse = argparse.ArgumentParser(description='This is a python sample program')

定义参数

argparse是一个全面的参数处理库。参数可以触发不同的动作,动作由 add_argument()方法的 action 参数指定。 支持的动作包括保存参数(逐个地,或者作为列表的一部分),当解析到某参数时保存一个常量值(包括对布尔开关真/假值的特殊处理),统计某个参数出现的次数,以及调用一个回调函数。

默认的动作是保存参数值。在这种情况下,如果提供一个类型,那么在存储之前会先把该参数值转换成该类型。如果提供 dest 参数,参数值就保存为命令行参数解析时返回的命名空间对象中名为该 dest 参数值的一个属性。
举个例子:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("echo")
args = parser.parse_args()
print(args.echo)

运行代码:

C:\Users\habits\Anaconda3\python.exe C:/Users/habits/Documents/PycharmProjects/test/python/m_argparse.py
usage: m_argparse.py [-h] echo
m_argparse.py: error: the following arguments are required: echo

带参数的话:

C:\Users\habits\Anaconda3\python.exe C:/Users/habits/Documents/PycharmProjects/test/python/m_argparse.py -h
usage: m_argparse.py [-h] echo

positional arguments:
  echo

optional arguments:
  -h, --help  show this help message and exit


C:\Users\habits\Anaconda3\python.exe C:/Users/habits/Documents/PycharmProjects/test/python/m_argparse.py foo
foo

说明:

  • 上述代码中使用add_argument()方法指定一个程序接收的命令行选项;
  • 这时在命令行中调用test.py,后必须指定一个选项参数;
  • parse_args()方法则返回命令行中为选项指定的数据;
  • 位置选项也成为返回数据的属性名,通过属性名可以获取数据; 上述帮助命令,返回信息可以知道echo是一个未知参数,但是其具体如何使用无法得知,为了使其更加丰富易懂,可以在add_argument()内添加其他的属性。

解析一个命令行

定义了所有参数之后,你就可以给 parse_args() 传递一组参数字符串来解析命令行。默认情况下,参数是从 sys.argv[1:] 中获取,但你也可以传递自己的参数列表。选项是使用GNU/POSIX语法来处理的,所以在序列中选项和参数值可以混合。

parse_args() 的返回值是一个命名空间,包含传递给命令的参数。该对象将参数保存其属性,因此如果你的参数 dest"myoption",那么你就可以args.myoption 来访问该值。

简单示例

以下简单示例带有3个不同的选项:一个布尔选项(-a),一个简单的字符串选项(-b),以及一个整数选项(-c)。

import argparse

parser = argparse.ArgumentParser(description='Short sample app')

parser.add_argument('-a', action="store_true", default=False)
parser.add_argument('-b', action="store", dest="b")
parser.add_argument('-c', action="store", dest="c", type=int)

print parser.parse_args(['-a', '-bval', '-c', '3'])

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python中argparse 命令行参数解析包
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广
38 0
python——argparse 模块(2)
python——argparse 模块(2)
36 0
python——argparse 模块(1)
python——argparse 模块(1)
45 0
argparse:Python命令行传参
argparse:Python命令行传参
290 0
Python编程:使用sys、argparse、click、fire实现命令行参数解析
Python编程:使用sys、argparse、click、fire实现命令行参数解析
107 0
《Python实例》基础之argparse,提供一个友好的接口说明,老大说我做的真好
python经常是作为脚本在使用,在大部分的时候我们写的脚本都要给其他人使用,参数的调用常规的情况下需要提供说明文档,说明每个参数是怎么使用的,但是如果是给同组内的程序同学使用,大都不愿意写文档,对于我们程序同学来说写代码更简单,再说源码都给你了要什么文档。
68 0
python argparse 源码阅读
http.server 可以使用 -h 查看帮助。这种自定义的命令行工具对用户使用程序非常有帮助,我们一起学习是如何实现命令工具的。
90 0
Python 中argparse模块的使用
Python解析命令行读取参数有两种方式:sys.argv和argparse
77 0
Python 内置的一个用于命令项选项与参数解析的模块argparse
1、argparse介绍: > argparse 是 Python 内置的一个用于命令项选项与参数解析的模块; > argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息
60 0
+关注
毛球饲养员
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多