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实现简单C++程序范围分析

    如何利用Python实现简单C++程序范围分析 概述 C++程序范围分析是一项非常重要的静态分析技术,它可以帮助程序员在开发过程中快速定位变量的作用域。本文将介绍如何使用Python实现简单的C++程序范围分析。 实现方式 在C++程序中,变量的作用域可以通过花括号{}之间的范围确定。我们可以利用Python的字符串解析技术,将源代码转换成语法树,从而分析变…

    python 2023年5月18日
    00
  • Python实现遍历大量表格文件并筛选出数据缺失率低的文件

    以下是详细讲解“Python实现遍历大量表格文件并筛选出数据缺失率低的文件”的完整攻略。 思路 定义函数,读取Excel表格数据; 统计每个Excel表格中缺失值的数量,计算缺失率; 筛选出缺失率低于给定阈值的Excel表格; 将符合要求的Excel表格文件名保存到列表中。 依次读取遍历目录下所有 Excel 表格文件,调用上述函数得到缺失率低于给定阈值的表…

    python 2023年6月3日
    00
  • 树莓派 Crontab Python 脚本需要写权限

    【问题标题】:Raspberry Pi Crontab Python script needs write permission树莓派 Crontab Python 脚本需要写权限 【发布时间】:2023-04-04 02:34:01 【问题描述】: 我有一个 python 脚本,我想每 15 分钟在我的树莓派上运行一次。该脚本应该做一些事情,然后将报告发布…

    Python开发 2023年4月6日
    00
  • python内置函数sorted()用法深入分析

    Python内置函数sorted()用法深入分析 Python内置函数sorted()用于对可迭代对象进行排序,返回一个新的已排序的列表。在本篇攻略中,我们将深入分析sorted()函数的用法,并提供两个示例说明。 基本用法 sorted()函数的基本用法如下: sorted(iterable, key=None, reverse=False) 其中,ite…

    python 2023年5月13日
    00
  • python中time tzset()函数实例用法

    当我们使用 Python 进行时间计算时,时区始终是一个关键的问题。Python 的 time 模块提供了一个 tzset() 函数,用于设置当前系统的本地时区信息。本篇文章将详细讲解 Python 中 time tzset() 函数的用法。 函数参数 此函数不接受参数。 示例1 以下示例展示了如何在 Python 中使用 tzset() 函数设置本地时区信…

    python 2023年6月3日
    00
  • django项目登录中使用图片验证码的实现方法

    下面是关于“Django项目登录中使用图片验证码的实现方法”的完整攻略,包含以下几个步骤: 步骤一:安装必要的Python库 使用图片验证码需要安装Pillow库,可以使用pip来安装,命令如下: pip install pillow 步骤二:生成随机验证码 我们可以使用Python的Pillow库来生成一张随机的图片验证码: import random f…

    python 2023年6月3日
    00
  • python 按照固定长度分割字符串的方法小结

    下面是“python 按照固定长度分割字符串的方法小结”的攻略: 1. 使用正则表达式 使用正则表达式是较为常见的一种方法。下面是使用re模块和正则表达式来实现的示例代码: import re s = ‘hello world’ result = re.findall(‘.{1,3}’, s) print(result) # [‘hel’, ‘lo ‘, ‘…

    python 2023年6月5日
    00
  • Python实现输出程序执行进度百分比的方法

    当我们在Python中编写一个长时间运行的程序时,我们通常希望能够输出程序执行进度的百分比,这样我们就可以更清楚地了解程序的状态,以及它还需要多长时间才能完成。以下是几种Python实现输出程序执行进度百分比的方法: 1. 使用tqdm tqdm是Python的一个进度条库,非常适合在Python程序中实现进度条和百分比显示的功能。使用tqdm非常简单,只需…

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