Python-命令行参数一次搞懂-argparse

概念解释

argparse是Python标准库中的一个模块,用于解析命令行参数和选项。它提供了一种方便且灵活的方式来处理命令行输入,使得编写命令行工具更加简单和直观。

主要功能
  1. 参数解析argparse可以自动解析命令行参数,并将其转换为Python对象。
  2. 帮助信息生成argparse可以自动生成帮助信息,方便用户了解命令的使用方法。
  3. 类型检查argparse可以对参数进行类型检查,确保输入的参数符合要求。
  4. 默认值设置argparse可以为参数设置默认值,简化用户输入。

基本用法

1. 导入模块

首先,需要导入argparse模块:

import argparse
2. 创建解析器对象

使用argparse.ArgumentParser类创建一个解析器对象:

parser = argparse.ArgumentParser(description='这是一个示例程序')

description参数用于描述程序的功能,会在帮助信息中显示。

3. 添加参数

使用add_argument方法向解析器对象添加参数:

parser.add_argument('filename', help='输入文件名')
parser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')
  • filename是一个位置参数,必须提供。
  • -v--verbose是一个可选参数,启用详细输出。
4. 解析参数

使用parse_args方法解析命令行参数:

args = parser.parse_args()
5. 使用解析后的参数

解析后的参数可以通过args对象访问:

print(f'输入文件名: {args.filename}')
if args.verbose:
    print('详细输出已启用')

示例代码

下面是一个完整的示例代码,展示了如何使用argparse模块解析命令行参数:

import argparse

def main():
    # 创建解析器对象
    parser = argparse.ArgumentParser(description='这是一个示例程序')

    # 添加参数
    parser.add_argument('filename', help='输入文件名')
    parser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')

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

    # 使用解析后的参数
    print(f'输入文件名: {args.filename}')
    if args.verbose:
        print('详细输出已启用')

if __name__ == '__main__':
    main()

详细功能介绍

1. 位置参数

位置参数是必须提供的参数,顺序固定。例如:

parser.add_argument('filename', help='输入文件名')
2. 可选参数

可选参数通常以短横线(-)或双短横线(--)开头。例如:

parser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')
3. 参数类型

可以指定参数的类型,例如整数、浮点数等:

parser.add_argument('count', type=int, help='输入一个整数')
4. 默认值

可以为参数设置默认值:

parser.add_argument('-o', '--output', default='output.txt', help='输出文件名')
5. 参数动作

action参数用于指定参数的行为,常见的有:

  • store_true:如果提供了该参数,则将其值设为True
  • store_false:如果提供了该参数,则将其值设为False
  • store:存储参数的值(默认行为)。
  • append:将参数的值追加到一个列表中。

例如:

parser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')
parser.add_argument('-l', '--list', action='append', help='添加到列表中')
6. 互斥参数

可以使用add_mutually_exclusive_group方法创建互斥参数组,组内的参数不能同时出现:

group = parser.add_mutually_exclusive_group()
group.add_argument('-a', action='store_true', help='选项A')
group.add_argument('-b', action='store_true', help='选项B')
7. 子命令

可以使用add_subparsers方法创建子命令:

subparsers = parser.add_subparsers(title='子命令', dest='command')

# 添加子命令
parser_a = subparsers.add_parser('commandA', help='子命令A')
parser_a.add_argument('argA', help='子命令A的参数')

parser_b = subparsers.add_parser('commandB', help='子命令B')
parser_b.add_argument('argB', help='子命令B的参数')

综合示例

下面是一个综合示例,展示了argparse模块的多种功能:

import argparse

def main():
    parser = argparse.ArgumentParser(description='这是一个综合示例程序')

    # 位置参数
    parser.add_argument('filename', help='输入文件名')

    # 可选参数
    parser.add_argument('-v', '--verbose', action='store_true', help='启用详细输出')
    parser.add_argument('-o', '--output', default='output.txt', help='输出文件名')
    parser.add_argument('-c', '--count', type=int, help='输入一个整数')

    # 互斥参数
    group = parser.add_mutually_exclusive_group()
    group.add_argument('-a', action='store_true', help='选项A')
    group.add_argument('-b', action='store_true', help='选项B')

    # 子命令
    subparsers = parser.add_subparsers(title='子命令', dest='command')

    parser_a = subparsers.add_parser('commandA', help='子命令A')
    parser_a.add_argument('argA', help='子命令A的参数')

    parser_b = subparsers.add_parser('commandB', help='子命令B')
    parser_b.add_argument('argB', help='子命令B的参数')

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

    # 使用解析后的参数
    print(f'输入文件名: {args.filename}')
    if args.verbose:
        print('详细输出已启用')
    print(f'输出文件名: {args.output}')
    if args.count is not None:
        print(f'输入的整数: {args.count}')
    if args.a:
        print('选项A已启用')
    if args.b:
        print('选项B已启用')
    if args.command == 'commandA':
        print(f'子命令A的参数: {args.argA}')
    elif args.command == 'commandB':
        print(f'子命令B的参数: {args.argB}')

if __name__ == '__main__':
    main()

总结

argparse模块是Python中处理命令行参数的强大工具,通过本文的介绍和示例代码,希望学生们能够掌握argparse的基本用法和高级功能,编写出更加灵活和用户友好的命令行工具。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

需要重新演唱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值