Python如何使用argparse模块处理命令行参数

使用argparse模块可以轻松处理命令行参数。下面是完整的Python使用argparse模块处理命令行参数的攻略:

导入argparse模块

首先需要导入argparse模块。在Python中使用import语句导入argparse即可:

import argparse

创建解析器

创建解析器对象时,需要使用ArgumentParser类。例如:

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

该类的构造函数中可以传入一些参数,这些参数的含义如下:

  • prog:程序名,默认是sys.argv[0],即当前脚本的文件名。
  • usage:用法,默认是自动从添加到解析器中的参数生成。
  • description:在参数帮助文档之前显示的文本。
  • epilog:在参数帮助文档之后显示的文本。
  • parents:一个ArgumentParser对象的列表,这些对象的参数也应该包含在内。
  • formatter_class:定制化帮助文档输出格式。
  • prefix_chars:可选参数的前缀,默认是“-”。
  • fromfile_prefix_chars:从文件中读取参数时的前缀,默认是“@”。
  • argument_default:参数的全局默认值。
  • conflict_handler:解决冲突的策略,默认为“error”,还可以设置为“resolve”和“ignore”。
  • add_help:是否添加帮助信息,默认为True。

添加参数

调用add_argument()方法来添加需要解析的命令行参数。例如:

parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')

该方法中的参数解释如下:

  • name or flags:参数名或选项名称。有两种情况:
  • name:指定参数名称,例如“foo”。
  • flags:指定选项名称,例如“-f”或“--foo”。
  • action:解析器遇到此选项时发生的动作。有以下几个值可选:
  • “store”:将参数保存到一个变量中。
  • “store_const”:保存一个常量到变量。
  • “store_true”:如果遇到此选项,设置变量为True。
  • “store_false”:如果遇到此选项,设置变量为False。
  • “append”:将参数添加到列表中。
  • “append_const”:并不往列表中添加参数,append一次添加指定的常量值。
  • “count”:计算选项出现的次数。
  • “help”:打印帮助信息。
  • “version”:打印版本信息。
  • nargs:解析器应该接受的参数数量。有以下几个值可选:
  • N:一个整数,用于表示接受的参数的数量(想要一个必要命令行参数需要将nargs设置为1)。
  • “?”:表示0或1个参数。
  • “*”:表示0或多个参数。
  • “+”:表示1或多个参数。
  • argparse.REMAINDER:表示将剩余的命令行参数全部保存到该变量中。
  • const:当action被设置成“store_const”或“append_const”时使用。
  • default:如果未提供该选项,则使用的默认值。如果action被设置为“store”并且没有提供,默认值是None。
  • type:与该选项关联的数据类型。有以下几个值可选:
  • int:将输入字符串转换为整数。
  • float:将输入字符串转换为浮点数。
  • string:不转换值,保留为字符串。
  • choices:该参数可设置一个集合限定命令行参数的范围。如果设置,其参数值必须在集合内,如果不在,用户将得到错误警告。例如,在用户名(username)和密码(password)的情况下,我们可以设置用户名(username)及其特定值必须在["tom","david","jerry"]内时才能正确运行命令行。
  • required:为该选项添加该标志会使解析器只有在提供了该选项时才停止解析。此标志仅适用于选项。
  • help:选项或参数简要说明。
  • metavar:在使用argparse之后,在使用–help显示的参数名称默认采用dest的名称,但是该参数可以自定义,默认使用大写字母。

解析命令行参数

使用parse_args()方法解析命令行参数。例如:

args = parser.parse_args()

完整示例1

下面是一个使用argparse模块的示例,它接受一个整数列表并对其进行求和:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Calculate the sum of integers.')
    parser.add_argument('integers', metavar='N', type=int, nargs='+',
                        help='an integer for the accumulator')
    args = parser.parse_args()
    print(sum(args.integers))

在命令行中运行以下命令:

python test.py 1 2 3 4 5

输出结果为:

15

完整示例2

下面是一个使用argparse模块的示例,它可以将输入的字符串进行大写或小写转换,并且可以选择输出到文件或终端:

import argparse

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Convert text to upper or lower case.')
    parser.add_argument('text', type=str, help='text to convert')
    parser.add_argument('-u', '--upper', action='store_true', help='convert to upper case')
    parser.add_argument('-l', '--lower', action='store_true', help='convert to lower case')
    parser.add_argument('-o', '--output', type=str, help='output file name')
    args = parser.parse_args()

    if args.upper:
        result = args.text.upper()
    elif args.lower:
        result = args.text.lower()
    else:
        result = args.text

    if args.output:
        with open(args.output, 'w') as f:
            f.write(result)
    else:
        print(result)

在命令行中运行以下命令:

python test.py "Hello World" -u -o output.txt

输出结果为:

HELLO WORLD

同时在当前目录下会生成一个名为 output.txt 的文件,其内容也为 HELLO WORLD

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python如何使用argparse模块处理命令行参数 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • 简单谈谈Python中的json与pickle

    当我们需要把数据从 Python 中保存到文件中或者把文件中的数据读入到 Python 中时,常用的两种序列化的方式是 json 和 pickle。json 是一种轻量级的数据交换格式,它简单易读,并且容易被人类理解和生成,并且能够在不同的编程语言之间进行数据交换。 Pickle 是一种更高级、更强大的序列化方式,它可以将 Python 中的任意对象序列化成…

    python 2023年6月2日
    00
  • 图数据结构的python类包含添加边缘方法我发现它很难理解

    【问题标题】:python class for graph data structure contain add edge method i find it complex to understand图数据结构的python类包含添加边缘方法我发现它很难理解 【发布时间】:2023-04-01 03:40:01 【问题描述】: 我正在学习 python,这是…

    Python开发 2023年4月8日
    00
  • Python如何使用Gitlab API实现批量的合并分支

    要批量合并Gitlab上的分支,可以使用Gitlab的API接口来完成此功能。下面是使用Python如何使用Gitlab API实现批量的合并分支的详细攻略。 步骤一:获取Gitlab API访问令牌 首先,需要获得Gitlab API访问令牌。可以在Gitlab中生成一个访问令牌,然后使用此令牌进行API访问。在Gitlab主页上点击顶部导航栏上的头像,进…

    python 2023年6月3日
    00
  • python使用tkinter模块实现文件选择功能

    下面就是使用 Python 的 tkinter 模块实现文件选择功能的完整攻略。 一、Tkinter 的介绍 Tkinter 是 Python 中最常用的 GUI 工具包,其提供了一组面向对象的 Python 绑定,可以让程序员在 Python 中使用 Tcl/Tk 的 GUI 能力。Tkinter 相对于其他 Python GUI 工具包有着广泛的口碑和期…

    python 2023年6月13日
    00
  • python中几种括号的使用()、[]、{}举例说明

    下面是详细讲解“Python中几种括号的使用()()、[]、{}举例说明”的攻略: 1. () 圆括号 在 Python 中,() 字符表示圆括号。通常使用圆括号表示函数调用、数学运算符优先级和元组数据类型。 1.1 函数调用 圆括号可以用于调用函数。例如,我们可以定义一个函数来实现两个数字相加的操作: def add_numbers(x, y): retu…

    python 2023年6月5日
    00
  • Python实现将元组中的元素作为参数传入函数的操作

    将元组中的元素作为参数传入函数,可以使用Python中的和操作符。其中,操作符可以将元组中每个元素拆分开来,作为函数的位置参数传入,而**操作符则可以将元组中的每个元素对应到函数的关键字参数中。 下面是两个示例来演示如何实现这个操作: 示例1: 假如现在有一个包含了多个整数元素的元组,需要使用这些整数来计算它们的平均值。 def average(*args)…

    python 2023年5月14日
    00
  • selenium+python自动化测试之环境搭建

    十分感谢您对Selenium的关注!下面是“selenium+python自动化测试之环境搭建”的详细攻略,分为以下几个步骤: 步骤1:安装Python 将Python安装到您的电脑上。如果您已经安装了Python,请跳过此步骤。可以从Python官方网站 https://www.python.org/downloads/ 下载适合您的版本。 步骤2:安装p…

    python 2023年5月19日
    00
  • python list中append()与extend()用法分享

    Python列表中append()与extend()用法分享 在Python中,列表是一种非常常用的数据类型,用于存储一组有序的元素。列表可以包含不同类型的元素,包括数字、字符串、布尔值等。本文将详细介绍Python列表中append()与extend()的用法,包括它们的区别、使用方法以及示例说明。 append()方法 append()方法用于在列表的末…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部