详解Python命令行解析工具Argparse

当你编写一个Python脚本时,它通常需要一些参数来提供上下文信息。例如,你可能需要指定文件路径,设置日志级别或指定输出格式。命令行参数是一种流行的方式来提供这些信息,但如果手工分析参数,则可能会变得非常棘手。因此,Python提供了Argparse模块来帮助我们通过解析命令行参数更加容易地获得所需信息。

Argparse简介

Argparse模块是Python标准库中提供的一种用于解析命令行参数和选项的工具。 Argparse从sys.argv中解析出命令行参数并返回一个对象,该对象包含参数值和选项值。例如,如果你运行以下命令:

python my_script.py --input input_file.txt --output output_file.txt -v

在my_script.py中可以通过Argparse获取以下信息:

  • input_file.txt是输入文件名。
  • output_file.txt是输出文件名。
  • 等级的verbose级别设置为True。

这里是一个Argparse的示例,解析之后可以得到输入和输出文件的路径以及是否启用更高的日志级别输出:


import argparse

parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('--input', '-i', dest='input_file', help='Input file path', required=True)
parser.add_argument('--output', '-o', dest='output_file', help='Output file path', required=True)
parser.add_argument('--verbose', '-v', dest='verbose', help='Verbose logging', action='store_true')

args = parser.parse_args()

# access arguments
print(args.input_file)
print(args.output_file)
print(args.verbose)

在这个示例中,我们导入了Argparse模块并创建了一个argparse.ArgumentParser对象。使用add_argument方法,我们定义了三个参数,分别是input_file、output_file、verbose。这个方法的第一个参数是参数名(可以看做是一个变量名),用于获取命令行输入所带的参数值。--input和--output表示长参数名,-i和-o表示短参数名,dest参数表示将该参数解析后保存到哪个变量中。help参数提供的是该参数对应的帮助提示信息,required参数表示是否为必须参数。在这个例子中,--input和--output都是必须的。verbose参数是一个标签,如果在命令行中出现-v,则会将verbose参数解析为True。

最后我们调用了parser.parse_args()方法来解析参数,我们可以使用args.input_file,args.output_file和args.verbose等属性获取所需参数的值。

Argparse示例

下面给出两个Argparse的示例:

示例1

这个示例是将两个数字相加。


import argparse

parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('--first', dest='first', help='First number', required=True)
parser.add_argument('--second', dest='second', help='Second number', required=True)

args = parser.parse_args()

first = int(args.first)
second = int(args.second)

print(first + second)

在这个示例中我们使用add_argument添加了两个参数first和second,分别表示相加的两个数,并且使用了help属性以提高代码可读性。参数first和second均为必填参数。

接下来我们使用parser.parse_args()方法来解析参数,所需的两个参数都可以通过args.first和args.second获取。我们将这两个参数转换成整数后,返回他们的和。

示例2

这个示例演示了如何在Python脚本中使用Argparse实现命令行工具的转换。


import argparse

parser = argparse.ArgumentParser()
parser.add_argument("infile", type=str, help="input file name")
parser.add_argument("-o", "--outfile", type=str, required=True, help="output file name")
parser.add_argument("-u", "--uppercase", help="convert text to uppercase", action="store_true")
parser.add_argument("-l", "--lowercase", help="convert text to lowercase", action="store_true")

args = parser.parse_args()

def convert_text(infile, outfile, uppercase, lowercase):
    with open(infile, 'r') as fin:
        text = fin.read()

    if uppercase:
        text = text.upper()
    elif lowercase:
        text = text.lower()

    with open(outfile, 'w') as fout:
        fout.write(text)

convert_text(args.infile, args.outfile, args.uppercase, args.lowercase)

这个脚本可以将文本文件转换为大写或小写,输入文件和输出文件均需要指定。

我们使用argparse.ArgumentParser()方法创建一个新的解析器对象,并添加了infile、outfile、uppercase和lowercase四个参数。其中infile和outfile均必填(无需指定参数名),uppercase和lowercase均为可选参数。

对于可选参数,使用action属性指定处理方式,这里的处理方式为如果参数在命令行中可见,则将参数解析为True,否则解析为False。例如,使用了-u或--uppercase参数,则uppercase参数会被视为True。在convert_text方法中根据uppercase或lowercase参数将text转换成大写或小写,然后将其写入到输出文件中。

最后,我们使用parser.parse_args()方法获取到所有命令行参数的值,并将其传递给convert_text方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python命令行解析工具Argparse - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • Python3中.whl文件创建及使用

    下面是关于“Python3中.whl文件创建及使用”的完整攻略,内容主要包括如何创建.whl文件和如何使用.whl文件。 1. 什么是.whl文件 .wheel文件(缩写为.whl)是Python软件包的一种新格式,也是.dist-info和.egg-info两种格式的继承和统一。.whl文件是一个ZIP格式的压缩包,里面包含了Python模块的代码,以及其…

    python 2023年6月3日
    00
  • 使用参数、关键字参数、*args、**kwargs 与 Python 函数混淆

    【问题标题】:Confusion with Python functions using an argument, keyword argument, *args, **kwargs使用参数、关键字参数、*args、**kwargs 与 Python 函数混淆 【发布时间】:2023-04-06 19:00:01 【问题描述】: 鉴于以下函数和对print_…

    Python开发 2023年4月7日
    00
  • Python采用Django制作简易的知乎日报API

    讲解“Python采用Django制作简易的知乎日报API”的完整攻略,包括以下几个步骤: 安装Django 我们需要先安装Django这个Python的Web框架。可以通过pip来安装,打开终端,输入以下命令: pip install django 这样就安装好了Django。 创建Django项目 在命令行中进入你想要创建Django项目的目录,然后输入…

    python 2023年5月20日
    00
  • 在python list中筛选包含字符的字段方式

    以下是“在Python list中筛选包含字符的字段方式”的完整攻略。 1. 使用列表推导式 列表推导式是一种简洁的语法,可以快速生成列表,并且可以使用条件语句筛选包含特定字符的字段。示例如下: my_list = [‘apple’, ‘banana’, ‘cherry’, ‘date’] filtered_list = [x for x in my_lis…

    python 2023年5月13日
    00
  • python list排序的两种方法及实例讲解

    以下是详细讲解“Python列表排序的两种方法及实例讲解”的完整攻略。 在Python中,列表是一种常用的数据类型,可以用来存储一组有序的数据。本文将介绍Python中列表的两种方法,并提供两个示例说明。 方法一:使用sort()方法 sort()方法用于对列表进行排序,可以按照升序或降序排列。例如: lst = [3, 1, 4, 2] lst.sort(…

    python 2023年5月13日
    00
  • Python实现对word文档添加密码去除密码的示例代码

    针对“Python实现对word文档添加密码去除密码”的问题,我将从以下三个方面进行讲解: Python操作word文档的库 Word文档添加密码的示例代码 Word文档去除密码的示例代码 1. Python操作word文档的库 Python操作word文档涉及到第三方库的调用,其中比较常用的有python-docx、docxtpl等。这里以python-d…

    python 2023年6月5日
    00
  • Python 可爱的大小写

    Python 可爱的大小写 Python 中的大小写是区分的,即变量名、函数名等标识符的大小写具有不同的含义,下面通过几个示例详细讲解 Python 的大小写规则。 标识符命名规则 Python 中的标识符可包含英文字母、数字和下划线,但必须以字母或下划线开头。此外,Python中的标识符是区分大小写的。因此,以下三个标识符是不同的: apple = 1 A…

    python 2023年6月5日
    00
  • python 解压pkl文件的方法

    下面是“Python解压pkl文件的方法”的完整攻略: 1. 什么是Pickle(pkl)文件? Pickle是一种Python序列化/反序列化(Serialization/Deserialization)模块。它能够将Python数据结构转换为二进制流,进而可以将数据以文件的形式进行保存,方便存取和共享。Pickle的文件格式是以.p文件扩展名的二进制单一…

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