argparse是Python标准库中一个非常强大且推荐使用的模块,专门用于解析命令行参数和选项,让您可以轻松地为您的Python脚本创建用户友好的命令行界面(CLI)。

当您的程序需要从终端运行时接收输入时,argparse能为您处理很多繁琐的工作,例如:

  • 自动解析用户输入的参数。
  • 根据您的定义,将参数转换为合适的Python数据类型。
  • 在用户提供无效参数时,自动生成并显示错误信息。
  • 当用户请求帮助时(通常使用 -h--help),会自动生成清晰的帮助和用法信息。

argparse的基本使用四步法

使用argparse通常遵循以下四个简单的步骤:

  1. 导入 argparse 模块
  2. 创建解析器(Parser)对象
  3. 向解析器添加参数(Argument)
  4. 解析参数

下面我们通过一个具体的例子来详细解释这四个步骤。


示例:一个计算数字次方的简单脚本

假设我们要创建一个名为 calculate_power.py 的脚本,它可以计算一个数字的指定次方,并且可以选择性地增加输出的详细程度。

calculate_power.py 的代码如下:

import argparse

# 1. 创建解析器
parser = argparse.ArgumentParser(description="计算一个数字的指定次方。")

# 2. 添加参数
# 添加位置参数 (Positional Arguments)
parser.add_argument("base", help="要计算的底数", type=int)
parser.add_argument("exponent", help="要计算的指数", type=int)

# 添加可选参数 (Optional Arguments)
parser.add_argument("-v", "--verbose", action="store_true", help="增加输出的详细程度")

# 3. 解析参数
args = parser.parse_args()

# 4. 使用参数
result = args.base ** args.exponent

if args.verbose:
    print(f"正在计算 {args.base}{args.exponent} 次方...")
    print(f"计算结果是: {result}")
else:
    print(result)

代码详解

1. 创建解析器
parser = argparse.ArgumentParser(description="计算一个数字的指定次方。")
  • argparse.ArgumentParser() 创建了一个解析器对象。
  • description 参数提供了一段关于这个程序用途的简短描述。当用户请求帮助信息时,这段描述会显示在最前面。
2. 添加参数

我们使用 .add_argument() 方法来定义脚本接受哪些参数。

  • 位置参数 (Positional Arguments)

    parser.add_argument("base", help="要计算的底数", type=int)
    parser.add_argument("exponent", help="要计算的指数", type=int)
    
    • 位置参数是必需的,并且它们的顺序很重要。 用户在命令行中必须按顺序提供它们的值。
    • "base""exponent" 是参数的名称。
    • help 参数提供了对该参数的说明,会显示在帮助信息中。
    • type=int 会告诉 argparse 将用户输入的字符串自动转换为整数。如果转换失败(例如用户输入了 “abc”),argparse 会自动报错。
  • 可选参数 (Optional Arguments)

    parser.add_argument("-v", "--verbose", action="store_true", help="增加输出的详细程度")
    
    • 可选参数通常以 - (短格式) 或 -- (长格式) 开头。
    • action="store_true" 是一个常见的用法。它的意思是,如果用户在命令行中提供了 -v--verbose 这个选项,那么就将 args.verbose 的值设为 True。如果没有提供,则默认为 False。这常用于开关式的选项。
3. 解析参数
args = parser.parse_args()
  • 这行代码会检查命令行输入,根据之前定义的规则进行解析,然后返回一个包含所有参数值的对象(通常是一个 Namespace 对象)。
  • 如果用户输入有误,程序会在这里终止并显示错误信息。
4. 使用参数
result = args.base ** args.exponent
if args.verbose:
    # ...
  • 解析完成后,您可以通过 args.参数名 的方式来访问用户提供的值。例如,args.base 对应 “base” 参数的值,args.verbose 对应 --verbose 选项的值。

如何在命令行中运行

  1. 查看帮助信息
    argparse 会自动为您生成帮助文档。

    python calculate_power.py -h
    

    输出将会是:

    usage: calculate_power.py [-h] [-v] base exponent
    
    计算一个数字的指定次方。
    
    positional arguments:
      base                  要计算的底数
      exponent              要计算的指数
    
    options:
      -h, --help            show this help message and exit
      -v, --verbose         增加输出的详细程度
    
  2. 基本用法
    提供两个必要的位置参数。

    python calculate_power.py 5 3
    

    输出:

    125
    
  3. 使用可选参数
    激活详细输出模式。

    python calculate_power.py 5 3 --verbose
    ```  输出:
    

    正在计算 5 的 3 次方…
    计算结果是: 125

    
    
  4. 无效输入
    如果提供非整数或者缺少参数,argparse 会自动报错。

    python calculate_power.py 5
    

    输出:

    usage: calculate_power.py [-h] [-v] base exponent
    calculate_power.py: error: the following arguments are required: exponent
    
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐