argparse模块介绍
一、概述
argparse是一个用于解析命令行参数和选项的python标准库模块。 它可以让你轻松地编写用户友好的命令行界面,定义你的程序需要的参数,自动生成帮助和用法信息,以及处理用户给出的无效参数。二、使用详解
2.1、创建ArgumentParser对象
要使用argparse,首先你需要创建一个argparse.ArgumentParser的实例,它是一个包含参数规范和一些全局选项的容器(Namespace)。你可以在创建时传入一些参数,如程序名、描述、帮助信息等,来定制你的解析器。例如:
点击查看代码
prog:默认为当前程序的名字,即sys.argv[0],用于在帮助文档中显示程序名称。
description:一个字符串,用于描述程序的功能或用途,会在生成的帮助信息中显示。
epilog:也是一个字符串,用于在帮助文档末尾添加额外的信息或注释。
prefix_chars:指定短选项的前缀字符,默认为 '-'。可以通过修改此属性来自定义前缀,但通常保持默认值。
fromfile_prefix_chars:指定从文件中读取额外参数的前缀字符,默认无。如果设置了此属性,用户可以通过指定一个文件名(以这些字符开头),让解析器从该文件中读取更多的命令行参数。
argument_default:指定未明确赋值的参数的默认值类型。默认为 None。
conflict_handler:解决选项冲突的策略,默认为 'error',意味着如果有选项冲突会抛出异常。另一个可选值是 'resolve',在这种模式下,较晚添加的选项会覆盖之前的同名选项。
add_help:布尔值,决定是否添加 -h 或 --help 参数来显示帮助信息,默认为 True。
eg:
parser = argparse.ArgumentParser(prog="select2insert",
description="把select出来的数据转变成insert语句任何数据库都可使用"
)
创建了一个解析器后,你需要用add_argument()方法来添加你想要解析的参数。
argparse支持两种类型的参数:位置参数和可选参数。
位置参数是根据它们在命令行中出现的位置来识别的,用户在命令行中必须提供且按照它在代码中定义的顺序指定,一般不使用这种方式。例如:
点击查看代码
# 添加位置参数
parser.add_argument("filename", help="要输入的文件")
可选参数是根据它们前面的短横线或双横线来识别的,它们通常是可以省略或指定不同值的参数。例如:
点击查看代码
# 添加可选参数
parser.add_argument("-v", "--verbose", help="查看脚本的版本")
-v, --verbose 都是可选参数,用户在命令行中可以任意使用二者中的一个
argparse.ArgumentParser.add_argument() 函数非常强大,支持多种参数来定制命令行参数的行为。以下是该函数一些主要参数的详细说明:
-
name or flags:这是参数名或标志。对于位置参数,通常只提供一个名字(字符串)。对于可选参数,提供一个短标志(如 -f)或长标志(如 --file)的字符串,或者将两者作为元组提供,如 ('-f', '--file')。
-
action:当参数被遇到时采取的动作。默认是 'store',即存储参数值。其他常用动作包括:
'store_const':存储一个常数值。
'store_true' / 'store_false':用于布尔开关,默认值为 False,遇到时翻转。
'append':将值追加到列表中。
'append_const':将常数值追加到列表中。
'count':计数参数出现的次数。 -
default:参数没有在命令行中出现时使用的默认值。
-
type:将参数值转换为指定类型的函数。默认为 str,可以是 int, float, pathlib.Path 等。
-
choices:参数允许的值集合。如果提供的值不在集合中,则会引发错误。
-
required:布尔值,指示该参数是否为必填项。默认为 False,对于位置参数通常无需设置,因为它们本身就是必需的。
-
nargs:指定一个参数可以接受多个值,接收到的多个值通过args.parse_args().参数名 获取到后是一个列表
* nargs='+':表示至少接受一个值。如果用户提供了一个以上的值,它们将被收集到一个列表中。
* nargs='':表示接受任意数量的值(包括零个),同样,提供的值会被收集到一个列表中。
nargs=N:其中N是一个整数,表示接受确切的N个值。 -
help:参数的帮助文本,会在 --help 输出中显示。
2.2、解析参数
添加了所有想要解析的参数后,你可以用parse_args()方法来运行解析器,并将提取出来的数据放在一个argparse.Namespace对象中,这是一个特殊的内置对象,这个对象是一个简单的容器,用于存储命令行参数的名称和对应的值,它支持属性访问方式。当你调用 parse_args() 方法时,argparse 解析命令行参数,并根据你在 add_argument() 方法中定义的参数,将每个参数的值填充到 Namespace 对象中。你可以像访问对象属性一样访问这些值,例如,如果你有一个名为 --input-file 的参数,你可以通过 args.input_file 来访问其值。例如
点击查看代码
import argparse
# 创建解析器
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument("--input-file", help="input file path")
parser.add_argument("-v", "--verbose", help="查看脚本的版本")
# 解析命令行参数
args = parser.parse_args()
# 访问参数值
print(args) # Namespace(verbose=None, input_file=None)
print(args.input_file) # None,没有参数传入时默认值为None
print(args.verbose) # None
2.3、其他常用方法
1. add_subparsers(title=None, description=None, prog=None, parser_class=-
parse_args(args=None, namespace=None)
解析命令行参数,args 默认为 sys.argv[1:]。返回一个 argparse.Namespace 对象,包含解析后的参数值。 -
print_help(file=None)
打印帮助信息到指定的文件流,默认是 sys.stdout。 -
print_usage(file=None)
打印使用说明到指定的文件流,默认是 sys.stdout。 -
exit(status=0, message=None)
使解析器退出,可选地输出一条消息和指定退出状态码。 -
error(message)
打印错误消息并根据 exit_on_error 设置决定是否退出。 -
format_help()
返回格式化后的帮助信息字符串,不直接打印。 -
format_usage()
返回格式化后的使用说明字符串,不直接打印。 -
set_defaults(**kwargs)
为未设置默认值的参数设置默认值。传入的关键字参数成为 Namespace 对象的属性。 -
add_argument_group(title, description=None)
创建并返回一个新的参数组,用于组织相关的参数。 -
mutually_exclusive_group(required=False)
创建一个互斥参数组,确保组内的参数不会同时被指定。required 指定是否必须提供组内的至少一个参数。例如:
点击查看代码
# 创建一个解析器对象
parser = argparse.ArgumentParser()
# 创建一个互斥组
group = parser.add_argument_group()
# 为互斥组添加一些选项
group.add_argument('-a', help='')
group.add_argument('-b', help='')
# 获取互斥组参数
args = parser.parse_args()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix