您的位置:

Python argparse模块详解

一、argparse模块简介

Python argparse是一个命令行解析库,支持脚本参数、子命令和类型检查功能。argparse最常用的作用是将命令行参数转换为Python中易于操作的对象。

argparse主要包含ArgumentParser类和一些其他有用的子模块,常见的子模块有argparse.ArgumentParser.add_argument()方法、argparse.ArgumentParser.parse_args()方法和argparse.Namespace类。

二、ArgumentParser类详解

argparse.ArgumentParser类用于解析命令行参数,它提供了add_argument()方法来定义命令行参数的类型、默认值、帮助信息、特定行为和许多其他属性。

add_argument()方法包含多个参数,最常用的参数如下:

  • name or flags(参数名):字符串或列表,用来定义参数的名字或选项(例如"--input" 或 "-i")。参数名和选项名必须以"--"或"-"开头。
  • type(参数类型):指定参数的类型,如int、float、str和bool。
  • default(默认值):指定参数的默认值,如果没有设置此参数,则表示参数是必需的。
  • help(帮助信息):用来描述参数的帮助信息,当用户输入"--help"时,会显示此信息。
  • action(特定行为):定义参数的特定行为,如store、store_true、store_false等。
  • nargs:用于指定参数数量,如"?"表示0或1个参数,"*"表示0或多个参数,"+"表示1或多个参数。

import argparse

parser = argparse.ArgumentParser(description='Example usage of argparse')
parser.add_argument('input', help='input file path') # 必需参数
parser.add_argument('--output', help='output file path') # 可选参数
parser.add_argument('--verbose', action='store_true', help='whether to output verbose information') # 可选开关参数
args = parser.parse_args()

print(args.input)
print(args.output)
print(args.verbose)

三、parse_args()方法详解

argparse.ArgumentParser.parse_args()方法用于解析命令行参数,并返回一个包含所有参数值的命名空间对象。

使用此方法时,需要注意以下几点:

  • 参数的输入方式通常是使用空格分隔的方式,如"--input /path/to/file.txt"。
  • 如果输入的参数无法解析或不符合规定,则会引发异常,可以使用"--help"选项获取更多信息。

import argparse

parser = argparse.ArgumentParser(description='Example usage of argparse')
parser.add_argument('input', help='input file path') # 必需参数
parser.add_argument('--output', help='output file path') # 可选参数
parser.add_argument('--verbose', action='store_true', help='whether to output verbose information') # 可选开关参数
args = parser.parse_args()

print(args.input)
print(args.output)
print(args.verbose)

四、Namespace类详解

argparse.Namespace类是一个简单的命名空间类,用于存储参数值。

当使用argparse.ArgumentParser.parse_args()方法解析命令行参数时,返回的就是一个由argparse.Namespace类实例化的对象。

这个类没有实例化构造函数,可以通过访问对象属性来设置和获取参数值。


import argparse

parser = argparse.ArgumentParser(description='Example usage of argparse')
parser.add_argument('input', help='input file path') # 必需参数
parser.add_argument('--output', help='output file path') # 可选参数
parser.add_argument('--verbose', action='store_true', help='whether to output verbose information') # 可选开关参数
args = parser.parse_args()

print(args.input)
print(args.output)
print(args.verbose)

五、小结

本文对Python argparse模块进行了详细的介绍,主要包含ArgumentParser类、parse_args()方法和Namespace类的详细解释。当我们需要从命令行读取参数时,argparse模块可以帮助我们简化代码,并提供更友好的交互方式。