argparse命令行参数解析

在阅读大佬们代码时,看到他们使用了argparse相关代码,结合shell脚本,整个参数修改的过程变得十分直观、方便、简单…

由于argparse模块提供了许多功能,下面介绍一些常用方法,帮助快速理解和使用,方便自己也服务他人。

argparse 模块:可以让人轻松编写用户友好的命令行接口。

  • 程序定义它需要的参数,argparse 弄清如何从 sys.argv 解析出那些参数。
  • 自动生成帮助和使用手册,
  • 在用户给程序传入无效参数时报出错误信息。

使用 argparse

  1. 创建一个解析器
  2. 添加参数
  3. 解析参数

1.创建一个解析器

使用 argparse 的第一步是创建一个 ArgumentParser 对象:

import argparse
parser = argparse.ArgumentParser()

ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。

2.添加参数

给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的。通常,这些调用指定 ArgumentParser 如何获取命令行字符串并将其转换为对象。这些信息在 parse_args() 调用时被存储和使用。
例如:

parser.add_argument("--verbose", action="store_true", help="increase output verbosity")

# 也可以使用这一选项的短板本
parser.add_argument("-v", "--verbose", action="store_true", help="increase output verbosity")

可选参数:

  • name or flags - 一个命名或者一个选项字符串的列表,例如 foo 或 -f, --foo。
  • action - 当参数在命令行中出现时使用的动作基本类型。
  • nargs - 命令消耗的数目。
  • const - 被一些 action 和 nargs 选择所需求的常数。
  • default - 当参数未在命令行中出现并且也不存在于命名空间对象时所产生的值。
  • type - 命令行参数应当被转换成的类型。
  • choices - 可用的参数的容器。
  • required - 此命令行选项是否可省略 (仅选项可用)。
  • help - 一个此选项作用的简单描述。
  • metavar - 在使用方法消息中使用的参数值示例。
  • dest - 被添加到 parse_args() 所返回对象上的属性名。

3. 解析参数

ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作。

parser.parse_args()

示例:用简短程序来执行幂次运算

在 prog.py 文件中:

import argparse

# 创建解析器
parser = argparse.ArgumentParser() 
# 添加参数
parser.add_argument("x", type=int, help="the base")
parser.add_argument("y", type=int, help="the exponent")
parser.add_argument("-v", "--verbosity", action="count", default=0)  # default设置为 0 来让它可以与其他整数值相互比较。
#解析参数
args = parser.parse_args()  
#幂运算
answer = args.x**args.y  
# 根据count数量判断输出形式
if args.verbosity >= 2:
    print("Running '{}'".format(__file__))
if args.verbosity >= 1:
    print("{}^{} == ".format(args.x, args.y), end="")
print(answer)

注:默认情况下如果一个可选参数没有被指定,它的值会是 None,并且它不能和整数值相比较(会产生TypeError 异常)。

输出:

$ python3 prog.py 4 2
16

$ python3 prog.py 4 2 -v
4^2 == 16

$ python3 prog.py 4 2 -vv
Running 'prog.py'
4^2 == 16

参考教程:

argparse — 命令行选项、参数和子命令解析器
Argparse 教程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值