详解Python命令行解析工具Argparse

yizhihongxing

当你编写一个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日

相关文章

  • python数据可视化之日期折线图画法

    接下来我将详细讲解“Python 数据可视化之日期折线图画法”的完整攻略。 一、前言 在数据分析和可视化中,日期处理是一个常见的需求,通过日期折线图可以更直观地反映数据的变化趋势。本文将介绍如何用 Python 中的 matplotlib 包绘制日期折线图。 二、准备工作 在使用 matplotlib 包前,需要安装 Matplotlib 包、Numpy 包…

    python 2023年5月18日
    00
  • Linux服务器网卡流量查看方法 shell和Python各一枚

    Linux服务器网卡流量查看方法 shell和Python各一枚 在Linux服务器上,我们经常会需要查看网卡的流量情况,以便了解网络带宽的使用情况和网络环境的波动情况。下面分别介绍使用shell脚本和Python脚本来查看网卡流量的方法。 使用Shell脚本查看网卡流量 在Linux系统中,我们可以通过/proc/net/dev文件来查看网卡的流量情况。我…

    python 2023年6月3日
    00
  • Python数字比较与类结构

    Python数字比较攻略 Python数字比较操作用于比较两个数字的大小关系,通常会使用比较逻辑运算符(>、<、==、!=、>=、<=),以下是详细说明。 1.逻辑运算符 逻辑运算符有以下几个: >:大于 <:小于 ==:等于 !=:不等于 >=:大于等于 <=:小于等于 2.数字类型 Python内置支持三种…

    python 2023年6月3日
    00
  • Python3.5字符串常用操作实例详解

    Python3.5字符串常用操作实例详解 Python是一种十分强大的编程语言,在日常开发中字符串是程序中必不可少的一部分。而Python中的字符串常用操作也是编写程序时经常使用的一些工具,下面就为大家详细讲解一下Python3.5字符串常用操作实例。 字符串的定义 在Python中字符串的定义可以使用单引号或双引号括起来,例如: str1 = ‘Hello…

    python 2023年5月20日
    00
  • Django框架验证码用法实例分析

    下面我来详细讲解一下“Django框架验证码用法实例分析”的完整攻略。 1. 什么是验证码? 验证码是指需要用户输入的一种区别于密码的识别字符,通常是由数字或字母组成,主要用于防止机器人恶意提交表单,保护网站安全和用户隐私。 2. Django中的验证码 Django中提供了很多验证码的第三方库,其中比较流行的有以下几种: django-captcha dj…

    python 2023年6月3日
    00
  • numpy.random.choice()函数详解

    numpy.random.choice()函数详解 numpy.random.choice(a, size=None, replace=True, p=None)函数从指定随机选择元素。 此函数返回给定大小的新数组,其元素来自在没有替换的情况下从输入数组中随机选择的元素。 参数: a: 一维数组或整数,表示可选项。如果是一个整数,则该整数是范围从零到n-1的…

    python 2023年6月3日
    00
  • 跟老齐学Python之Import 模块

    针对“跟老齐学Python之Import 模块”的完整攻略,我给您提供以下几个方面的内容。 一、概述 Python支持的模块类型 import语句的使用方法 from语句的使用方法 二、Python支持的模块类型 Python支持多种类型的模块,包括Python自带的模块、第三方库和自定义模块。其中Python自带的模块是Python内置的,无需安装就可以使…

    python 2023年5月20日
    00
  • 日历控件和天气使用分享

    那我就来详细讲解一下“日历控件和天气使用分享”的完整攻略。这个攻略中,主要包含以下几个部分: 日历控件的使用 天气API的使用 将日历和天气结合使用 接下来我会逐个进行说明。 日历控件的使用 日历控件是一个可以帮助用户查看并选择日期的工具,通常会在网站或APP中被使用。在HTML中,我们可以使用<input type=”date”>来创建一个日历…

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