Python argpase: 命令行参数解析的利器

一、什么是argparse

Python解释器能够读取命令行输入,但是当你需要输入大量参数时,手动输入命令行会变得非常繁琐。在Python中,argparse是一种处理命令行参数的标准模块。argparse让你可以轻松的编写用户友好的命令行界面。它提供了必选项、可选项、参数解析、类型限制和多项功能处理等功能。

二、使用argparse解析命令行参数

使用argparse必须先创建一个ArgumentParser对象,然后在该对象上添加选项。

import argparse

parser = argparse.ArgumentParser(description='对命令行参数进行解析')

# 添加必传选项
parser.add_argument('integers', type=int, nargs='+', help='一组数字')

# 添加可选选项
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max, help='默认返回最大值,传了该选项返回叠加和')

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

上面的代码创建了一个ArgumentParser对象,并添加了两个选项。必选项integers用来传入一组数字,可选项--sum用来选择返回叠加和还是最大值。下面是使用该代码的方式:

$ python program.py 1 2 3 4 5
5

$ python program.py 1 2 3 4 5 --sum
15

三、添加多种不同类型的参数

argparse支持多种不同类型的参数,例如字符串、整数和浮点数等。下面的示例演示如何添加多个不同类型的参数:

import argparse

parser = argparse.ArgumentParser(description='对命令行参数进行解析')

# 添加必传选项(整型)
parser.add_argument('integers', type=int, nargs='+', help='一组数字')

# 添加必传选项(浮点型)
parser.add_argument('source', type=float, help='源数字')

# 添加必传选项(字符串)
parser.add_argument('destination', type=str, help='目标字符串')

# 添加可选选项(布尔值)
parser.add_argument('--verbose', '-v', action='store_true', help='输出调试信息')

args = parser.parse_args()
print(args.integers)
print(args.source)
print(args.destination)
print(args.verbose)

上面的代码创建了一个带有多种参数类型的ArgumentParser对象,并添加了一个布尔值可选项--verbose-v。使用方式如下:

$ python program.py 1 2 3 4 5 6.5 destination -v
[1, 2, 3, 4, 5]
6.5
destination
True

四、处理互斥选项

有时候,多个选项之间可能会互相排斥。例如,使用语言选项时可能会要求只使用一个语言选项,而不能同时使用两个。在这种情况下,可以通过使用argparse框架中的mutually_exclusive_group 来实现互斥选项。

import argparse

parser = argparse.ArgumentParser(description='对命令行参数进行解析')
group = parser.add_mutually_exclusive_group()

group.add_argument('--foo', action='store_true', help='选项foo')
group.add_argument('--bar', action='store_true', help='选项bar')

args = parser.parse_args()
if args.foo:
    print('选中foo')
elif args.bar:
    print('选中bar')

上面的代码通过使用add_mutually_exclusive_group()方法创建了一个互斥组,并通过add_argument()方法向该组中添加了两个选项。argparse会确保这两个选项不能同时出现。使用方式如下:

$ python program.py --foo
选中foo

$ python program.py --bar
选中bar

$ python program.py --foo --bar
usage: program.py [-h] [--foo | --bar]
program.py: error: 不能同时指定--foo和--bar

五、处理子命令

当需要解析成一个命令行工具时,很常见的一个操作是添加子命令。例如,假设你想创建一个程序,这个程序有三个子命令,分别为startstoprestart。你希望通过调用这些子命令来启动或停止存储在数据库中的所需服务。

import argparse

parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='subparser_name')
subparser_start = subparsers.add_parser('start')
subparser_stop = subparsers.add_parser('stop')

args = parser.parse_args()
if args.subparser_name == 'start':
    print('选择了start子命令')
elif args.subparser_name == 'stop':
    print('选择了stop子命令')

上面的代码创建了一个ArgumentParser对象,并添加了两个子命令:start 和 stop。使用方式如下:

$ python program.py start
选择了start子命令

$ python program.py stop
选择了stop子命令

六、总结

argparse是一个非常有用的模块,可以让你轻松的编写用户友好的命令行界面。在本文中,我们了解了如何使用argparse来处理命令行参数,包括如何添加必须选项和可选项、如何支持多种不同类型的参数和如何处理互斥选项和子命令。相信您已经理解了argparse的基本用法和实现原理。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
DLQOSDLQOS
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:24

相关推荐

  • Python中引入上一级目录中函数

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

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

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

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

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

    编程 2025-04-29
  • Python列表中负数的个数

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

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

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

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

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

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

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

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

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

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

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

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

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

    编程 2025-04-29

发表回复

登录后才能评论