Python笔记之使用argparse模块命令行传参

这篇博客介绍了Python的argparse模块,用于解析命令行参数。文章详细讲解了位置参数、可选参数、长选项和短选项的使用,并通过示例代码展示了如何创建命令行工具,包括如何添加参数、解析参数以及实现功能逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python笔记之使用argparse模块命令行传参

code review!

1.argparse 模块简介

argparse 是 Python 标准库中一个用于解析命令行参数的模块。通过使用 argparse,你可以轻松地为脚本添加位置参数(positional arguments)、可选参数(optional arguments)、默认值等,并自动生成帮助和使用手册。

  • 位置参数(Positional Arguments):这些参数是必须提供的,调用命令时的位置固定。
  • 选项(Optional Arguments):通常以 --- 开头,不是必须的,有默认值或可省略。
  • 长选项(Long Options):以 -- 开头,后跟一个较长的名称(如 --help)。
  • 短选项(Short Options):以单个 - 开头,后跟一个字母或数字(如 -h)。
  1. 创建 ArgumentParser 对象。
  2. 使用 add_argument() 方法添加参数。
  3. 使用 parse_args() 方法解析命令行参数。

2.示例代码1

下面的示例展示了如何使用 argparse 来解析长选项和短选项:

import argparse

def main():
    # 创建 ArgumentParser 对象
    parser = argparse.ArgumentParser(description="示例程序")

    # 添加位置参数
    parser.add_argument("input", help="输入文件")

    # 添加长选项和短选项
    parser.add_argument("-o", "--output", help="输出文件", default="output.txt")

    # 添加只有长选项的参数
    parser.add_argument("--verbose", help="增加输出详细程度", action="store_true")

    # 解析命令行参数
    args = parser.parse_args()

    # 使用参数
    print("输入文件:", args.input)
    print("输出文件:", args.output)
    if args.verbose:
        print("详细模式已启用")

if __name__ == "__main__":
    main()

命令行使用示例

假设上面的脚本保存为 example.py,下面是如何在命令行中使用它的几个示例:

  • 只提供位置参数:

    python example.py data.txt
    

    输出:

    输入文件: data.txt
    输出文件: output.txt
    
  • 提供位置参数和长选项:

    python example.py data.txt --output=result.txt
    

    输出:

    输入文件: data.txt
    输出文件: result.txt
    
  • 启用详细模式:

    python example.py data.txt --verbose
    

    输出:

    输入文件: data.txt
    输出文件: output.txt
    详细模式已启用
    

3.示例代码2:长选项(long options)和短选项(short options)

当使用 argparse 模块创建命令行界面时,你可以定义长选项(long options)和短选项(short options)。这些选项允许用户以不同的方式输入相同的命令行参数,通常长选项更易于理解,而短选项则更加简洁。

import argparse

def main():
    # 创建 ArgumentParser 对象
    parser = argparse.ArgumentParser(description="处理输入和输出文件的示例")

    # 添加长选项和短选项
    parser.add_argument("-i", "--input", help="指定输入文件的路径", required=True)
    parser.add_argument("-o", "--output", help="指定输出文件的路径", default="default_output.txt")

    # 解析命令行参数
    args = parser.parse_args()

    # 输出处理结果
    print(f"输入文件: {args.input}")
    print(f"输出文件: {args.output}")

if __name__ == "__main__":
    main()

在命令行中的使用

假设上述代码保存在 file_processor.py 文件中。

使用长选项

长选项通常以 -- 开头,后跟一个描述性较好的名字,这样使得命令行参数的作用更加清晰。

python file_processor.py --input example.txt --output result.txt

输出将是:

输入文件: example.txt
输出文件: result.txt
使用短选项

短选项以单个 - 开头,后跟一个字母或数字,适合经常使用的命令或者那些希望快速输入的场景。

python file_processor.py -i example.txt -o result.txt

输出与使用长选项相同:

输入文件: example.txt
输出文件: result.txt

总结

长选项和短选项在 argparse 中可以同时定义,它们指向相同的参数。用户可以根据自己的喜好选择使用长选项还是短选项。长选项适合在脚本或程序中使用,因为它们使得代码更易于理解。短选项则适合交互式使用,因为它们输入更快。在设计命令行工具时,提供两种选项形式是一种良好的实践。

4.示例:创建一个简单的命令行工具

假设我们要创建一个命令行工具来处理一些简单的数学运算,例如加法和乘法。

1. 导入模块

首先,我们需要导入 argparse 模块:

import argparse
2. 创建 Parser 对象

创建一个 ArgumentParser 对象,可以提供一个关于程序的描述信息,这将在帮助信息中显示。

parser = argparse.ArgumentParser(description="一个简单的数学运算命令行工具")
3. 添加参数

我们将添加两个位置参数和一个选项参数:

# 添加位置参数
parser.add_argument('x', type=int, help="第一个数")
parser.add_argument('y', type=int, help="第二个数")

# 添加选项参数
parser.add_argument('--operation', type=str, default='add', choices=['add', 'multiply'], help="运算类型(加法或乘法)")
4. 解析参数

解析命令行参数,并将解析后的参数存储到一个变量中。

args = parser.parse_args()
5. 实现功能逻辑

根据用户输入的参数执行计算:

if args.operation == 'add':
    result = args.x + args.y
elif args.operation == 'multiply':
    result = args.x * args.y

print(f"结果是: {result}")

完整代码

将上述代码片段组合成一个完整的 Python 脚本:

import argparse

# 创建解析器
parser = argparse.ArgumentParser(description="一个简单的数学运算命令行工具")

# 添加参数
parser.add_argument('x', type=int, help="第一个数")
parser.add_argument('y', type=int, help="第二个数")
parser.add_argument('--operation', type=str, default='add', choices=['add', 'multiply'], help="运算类型(加法或乘法)")

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

# 根据参数执行运算
if args.operation == 'add':
    result = args.x + args.y
elif args.operation == 'multiply':
    result = args.x * args.y

print(f"结果是: {result}")

使用示例

用户可以通过命令行使用此脚本,例如:

python math_tool.py 5 3 --operation add

输出将是:

结果是: 8

或者:

python math_tool.py 5 3 --operation multiply

输出将是:

结果是: 15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只野生的善逸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值