Python argparse实现命令行参数解析与处理

在Python中,命令行参数处理在很多情况下非常有用。Python标准库中提供了 argparse 模块实现命令行参数解析,本文将从基本概念、常用参数、多个子命令等多个方面来详细阐述。

一、基本概念

argparse 是 Python 标准库中的一个用于处理命令行参数的模块,它可以解析命令行参数,并在使用帮助功能时生成漂亮的输出。Argparse 模块提供了一种简单的方式来定义命令行参数和帮助文本,在Python脚本中使用这些参数。

argparse 模块中最常用的对象是 ArgumentParser。当创建 ArgumentParser 对象时,可以向它添加参数和参数组。

    import argparse

    parser = argparse.ArgumentParser(description='Process some integers.')

定义了 ArgumentParser 对象之后,就可以向它中添加参数了。

    parser.add_argument('integers', metavar='N', type=int, nargs='+',
                        help='an integer for the accumulator')
    parser.add_argument('--sum', dest='accumulate', action='store_const',
                        const=sum, default=max,
                        help='sum the integers (default: find the max)')

最后,使用 ArgumentParser 对象的 parse_args() 方法将解析好的参数打包到一个 Namespace 对象中。

    args = parser.parse_args()
    print(args.accumulate(args.integers))

二、常用参数

argparse 允许添加很多种不同类型的参数,一些常用的参数如下所述。

1. 位置参数

位置参数是在解析器读取时按定义顺序读取并解析的参数。当定义位置参数时,会指定参数名称和数据类型。

    parser.add_argument("echo", help="echo the string you use here")

2. 可选参数

可选参数是指用户不必指定的参数。即,用户可以省略该参数并使用默认值。可选参数需要指定一个参数标志(或称选项)和相应的数据类型。

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

可选参数也可以使用简短选项标志。在 argparse 模块中,这被称为短选项。短选项是仅由一个字符组成的参数标志,通常用在命令行中可重用计数器或开关上。例如 -v 用于指定输出冗余程度。

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

3. 互斥参数

argparse 中可以处理互斥参数。互斥参数是指,在命令行中不可能同时指定的两个参数。例如,在 ls 命令中,指定 -a 和 -l 是互斥的。在 argparse 中,可使用 mutually_exclusive_group() 定义一个互斥参数。

    group = parser.add_mutually_exclusive_group()
    group.add_argument("-v", "--verbose", action="store_true")
    group.add_argument("-q", "--quiet", action="store_true")

4. 带参数的选项

在 argparse 中,选项也可以带参数,例如 -f file 或 –file file。参数类型可以是任意托管的 Python 基本类型。此外,还可以将单个参数视为多个参数,例如一个字符串列表,一个整数或一个文件。

    parser.add_argument("-f", "--file",
                        help="specify an output file",
                        metavar="FILE")

三、多个子命令

argparse 模块还支持多个子命令的处理,即 Python 脚本可以支持多个命令。

使用 add_subparsers() 方法创建一组子命令。对于每个子命令,创建一个子解析器并添加一个新参数属性命名为 func。

    parser = argparse.ArgumentParser()
    subparsers = parser.add_subparsers()

    # create the parser for the "spam" command
    parser_a = subparsers.add_parser('a')
    parser_a.set_defaults(func=a)

    # create the parser for the "bacon" command
    parser_b = subparsers.add_parser('b')
    parser_b.set_defaults(func=b)

在定义好子解析器之后,您可以根据命名空间执行任何命令。

    args = parser.parse_args()
    args.func(args)

四、完整代码

    import argparse

    def a(args):
        print("This is command a")

    def b(args):
        print("This is command b")

    # Create the parser
    parser = argparse.ArgumentParser()

    # create subparsers
    subparsers = parser.add_subparsers()

    # create the parser for the "a" command
    parser_a = subparsers.add_parser("a")
    parser_a.set_defaults(func=a)

    # create the parser for the "b" command
    parser_b = subparsers.add_parser("b")
    parser_b.set_defaults(func=b)

    # Parse the args
    args = parser.parse_args()
    args.func(args)

五、总结

argparse 模块非常方便,可以轻松地处理命令行参数。本文介绍了 argparse 模块的基本概念、常用参数和多个子命令等多个方面,对于使用 argparse 模块的 Python 开发者有很大帮助。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/161059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-21 01:17
下一篇 2024-11-21 01:17

相关推荐

  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29

发表回复

登录后才能评论