python argparse

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: argparseargparse – 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'])
相关文章
|
3月前
|
存储 Python
30天拿下Python之argparse模块
30天拿下Python之argparse模块
27 0
|
4月前
|
Python
【Python3】argparse解析与使用_python3 argparse
【8月更文挑战第1天】argparse 是对终端输入的命令行的参数进行解析,俗称命令行解析器。
40 1
|
4月前
|
测试技术 Python
python 命令行参数 argparse详解
这篇文章是关于Python命令行参数解析库`argparse`的详细解释和使用教程。文中提供了完整的代码模板,包括如何定义命令行参数、如何添加位置参数、可选参数和布尔参数,以及如何解析和使用这些参数。文章还包含了示例代码和测试用例,以展示如何在实际程序中应用`argparse`库。
49 0
|
4月前
|
Python
python命令行解析模块argparse
python命令行解析模块argparse
|
7月前
|
存储 开发者 Python
Python中的argparse模块:命令行参数解析的利器
Python中的argparse模块:命令行参数解析的利器
71 2
|
7月前
|
UED 开发者 Python
使用Python构建命令行工具:argparse和click库的使用
使用Python构建命令行工具:argparse和click库的使用
235 0
|
JSON 编解码 Linux
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
77 0
Python笔记1(赋值、浅拷贝和深拷贝、字符串日期转换、argparse、sys、overwrite、eval、json.dumps/json.loads、os.system(cmd)、zfill)
|
存储 开发工具 开发者
命令行参数解析神器:深入剖析Python中的argparse模块
命令行参数解析神器:深入剖析Python中的argparse模块
|
Python 容器
|
存储 Python
【Python标准库】argparse——命令行选项、参数和子命令解析器
【Python标准库】argparse——命令行选项、参数和子命令解析器
下一篇
DataWorks