argparse命令是解析命令行传递的参数工具
比如命令行执行一个python命令
python test.py 10 20
我想要在test.py文件运行的时候拿到传递的参数10和20 就需要使用 argparse 包
使用方法:简单案例
定位参数解析(Positional argument)
# -*- coding: utf-8 -*-
import argparse # 导包
parser = argparse.ArgumentParser() # 创建对象
parser.add_argument('integer', type=int, help='display an integer') # 添加匹配参数规则
# integer 是给获取的参数赋值一个变量名 , type 设置匹配的参数类型 help 是使用 -h 时展示的内容
args = parser.parse_args() # 获取所有参数, 注意不是一个字典,下面获取数据只能用 点 .
print args.integer # 打印参数
运行结果
python test_argparse.py 10
>>10
python test_argparse.py -h
>>usage: test_argparse.py [-h] integer # 输出命令的格式,即使用方式
>>positional arguments:
>>integer 匹配整数
# 如果传递参数多于需要的参数,会报错太多的参数
可选参数 案例(Optional argument)
# -*- coding: utf-8 -*-
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--square", help="display a square of a given number", type=int)
# 添加可选参数,需要在定义变量名的时候加 --
# 命令行调用的时候也要加 -- 变量名
parser.add_argument("--cubic", help="display a cubic of a given number", type=int)
args = parser.parse_args()
if args.square:
print(args.square**2)
if args.cubic:
print(args.cubic**3)
调用方式:
如果参数都是可选的,则不传参直接执行运行不会报错
python test_argparse.py
如果传参,命令行需要加对应的可选参数变量名,命令行调用必须参数传递不需要加变量名
python test_argparse.py --square 10
>> 100
python test_argparse.py --square 10 --cubic 3
>>100
>>27
可选参数和必选参数配合使用
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', type=int, nargs='+', # nargs 指定了至少为1个值,并且存为列表
help='an integer for the accumulator') # 添加必选参数 命令行调用不用加变量名
parser.add_argument('--sum', dest='accumulate', action='store_const', # dest是将捕获到的可选参数解析为 调用时的变量名
# 第12行 是调用 ,也可以理解为 定位参数指定的变量名调用 可选参数以dest指定变量名调用
const=sum, default=max, # default 是不指定可选参数时的默认值,这里使用了python内置方法max
help='sum the integers (default: find the max)') # 下面的打印是将integers得到的参数传进来解析
# action 是将变量存储到const 里面, const又调用python内置函数 sum 求和
args = parser.parse_args()
print(args.accumulate(args.integers))
调用
python test_argparse.py 1 2 3 4
>>4
python test_argparse.py 1 2 3 4 --sum
>>10
下面详解 add_argument命令
add_argument(name or flags...[, action][, nargs][, const][, default]
[, type][, choices][, required][, help][, metavar][, dest])
name or flags #选项字符串的名字或者列表,例如 foo 或者 -f, --foo
action # 命令行遇到参数时的动作,默认值是 store。
# =store_const,表示赋值为const;
# =append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
# =append_const,将参数规范中定义的一个值保存到一个列表;
# =count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
nargs - 应该读取的命令行参数个数,可以是具体的数字,
# 或者是?号,一个参数
# 当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;
# 或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
const - action 和 nargs 所需要的常量值
default - 不指定参数时的默认值。这里指定了python内置的max函数,选取最大值
type - 命令行参数应该被转换成的类型。
choices - 参数可允许的值的一个容器。
required - 可选参数是否可以省略 (仅针对可选参数)。
help - 参数的帮助信息,打印的说明
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.
网友评论