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

yizhihongxing

使用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实现批量下载文件

    下面是 Python 实现批量下载文件的完整攻略。 确定下载链接 首先,需要确定你要下载的文件的链接。如果链接是可迭代的,那么你可以利用 Python 的循环来批量下载这些文件。比如,以下代码实现了下载多个网页上的图片: import requests url_list = [‘http://www.example.com/img/img1.jpg’, ‘h…

    python 2023年6月3日
    00
  • 解决Python3.7.0 SSL低版本导致Pip无法使用问题

    解决Python3.7.0 SSL低版本导致Pip无法使用问题 在安装Python3.7.0版本之后,可能会遇到Pip无法使用的问题,这是因为Python3.7.0自带的SSL版本较低,不被大部分站点所接受。要解决这个问题,需要升级SSL版本。 以下是完整的攻略: 步骤1:下载OpenSSL源代码 到OpenSSL的官网(https://www.openss…

    python 2023年5月14日
    00
  • 详解Python遍历列表时删除元素的正确做法

    当我们在Python中遍历列表时,有时需要删除其中的元素。但是,直接在遍历过程中删除元素会导致索引错误和意外的结果。因此,本文将介绍正确的方法来遍历列表并删除元素。 详解Python遍历列表时删除元素的正确做法 以下是正确的方法来遍历列表并删除元素: 使用列表推导式 列表推导式是一种简洁而有效的方法,可以在遍历列表时删除元素。可以使用以下代码来实现: pyt…

    python 2023年5月13日
    00
  • 15面向对象特性

    面向对象特性 封装 在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。 封装的作用: 1、保护隐私(把不想别人知道的东西封装起来) 2、隔离复杂度(比如:电视机,我们看见的就是一…

    python 2023年4月24日
    00
  • python PyAUtoGUI库实现自动化控制鼠标键盘

    Python PyAutoGUI是一种自动化框架,允许自动化控制键盘和鼠标。通过这个框架,可以模拟人工鼠标键盘操作,从而实现自动化的效果,挽救大量时间和成本。 下面是一个关于如何使用PyAutoGUI框架的完整攻略: 安装PyAutoGUI 要使用PyAutoGUI框架,必须先安装它。安装Python后,在命令提示符或终端窗口中,使用以下命令进行安装: pi…

    python 2023年5月18日
    00
  • Python 完整的分析过程

    使用Python 进行数据分析主要分为以下几个步骤: 数据收集:收集需要分析的数据。可以通过网络抓取数据,读取本地文件,数据库查询等方式获取数据,常用的工具有requests、urllib等。 数据清洗:对采集到的数据进行预处理,包括去重、异常值处理、填充缺失值等,确保数据质量。常用的工具有pandas、numpy等。 数据分析:对数据进行分析,根据分析结果…

    python-answer 2023年3月25日
    00
  • 深入浅析正则表达式re模块(部分)

    深入浅析正则表达式re模块(部分) 正则表达式(Regular Expression)是一种描述字符串规则的方式,类型不仅仅局限于Python,而是能够跨语言使用。在Python中,使用正则表达式需要re模块支持。 re的基本用法 re模块提供了两种基本操作:匹配和搜索。 匹配 使用re模块的match()函数进行匹配,该函数可以在字符串的开头进行匹配。如果…

    python 2023年6月3日
    00
  • 详细分析Python垃圾回收机制

    详细分析Python垃圾回收机制攻略 Python是一种高级语言,它的垃圾回收机制自动管理内存,给程序员带来了很多便利。本文将基于Python 3.x版本,详细介绍Python的垃圾回收机制。 Python垃圾回收机制 Python中的垃圾回收机制使用引用计数的方式来管理内存。当Python对象的引用计数为0时,表示没有任何变量或数据结构中引用该对象,此时P…

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