Python argparse 命令行参数解析详解

洛溪
洛溪
发布时间:2026-10-15 | 5人浏览过
原创

本文详细介绍 Python 标准库 argparse 模块的使用方法。通过创建 ArgumentParser 对象、配置 add_argument 参数及调用 parse_args,实现用户友好的命令行接口。涵盖位置参数、可选参数、子命令及默认值等核心功能,帮助开发者高效处理终端输入。

argparse 模块简介

argparse 是 Python 中用于解析命令行参数和选项的标准模块。在许多场景下,程序需要解析命令行参数,以便在终端窗口中输入训练所需的参数和选项。使用 argparse 模块可以轻松地编写用户友好的命令行接口。程序定义所需的参数后,argparse 会自动从 sys.argv 中解析出这些参数。此外,该模块还会自动生成帮助文档和使用手册,并在用户传入无效参数时抛出错误信息。

test.py

ArgumentParser 对象配置


# -*- coding: utf-8 -*-
import argparse

# (1) 声明一个parser对象,该对象包含将命令行解析成 Python 数据类型所需的全部信息。
ap = argparse.ArgumentParser(description='Process some integers.')

# (2) 添加参数
ap.add_argument("first")  # 位置参数,这里表示第一个出现的参数赋值给first
ap.add_argument("--digit", type=int, help="输入数字")  # 声明一个int类型参数
ap.add_argument("--name", help="名字", default="dog")  # 同上,default 表示默认值

# (3) 读取命令行参数
args = ap.parse_args()

# (4) 调用这些参数
print(args.first)
print(args.digit)
print("name = {}".format(args.name))

调用

命令行调用示例


python test.py position_arg --name qwe

ArgumentParser 对象 (1) prog - 程序名称(默认值:sys.argv[0]) (2) usage - 描述程序用途的字符串(默认值:由添加到解析器的参数生成) (3) description - 在帮助文档之后显示的文本(默认值:无) (4) epilog - 在帮助文档之后显示的文本(默认值:无) (5) parents - 一个 ArgumentParser 对象的列表,其参数也应包含在内 (6) formatter_class - 用于自定义帮助文档输出格式的类 (7) prefix_chars - 可选参数的前缀字符集合(默认值:'-') (8) fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None) (8) argument_default - 参数的全局默认值(默认值:None) (9) conflict_handler - 解决冲突选项的策略(通常是不必要的) (10) add_help - 为解析器添加一个 -h/--help 选项(默认值:True) (11) allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项(默认值:True)

add_argument() 方法 (1) name or flags - 一个命名或者一个选项字符串的列表(例如 foo 或 -f, --foo) (2) action - 表示该选项要执行的操作 (3) default - 默认值 (4) dest - 用来指定参数的位置,被添加到 parse_args() 所返回对象上的属性名。 (5) type - 参数类型(例如 int) (6) choices - 用来选择输入参数的范围(例如 choice = [1, 5, 10]) (7) help - 用来描述这个选项的作用 (8) nargs - 命令行参数应当消耗的数目。 (9) const - 被一些 action 和 nargs 选择所需求的常数。 (10) required - 此命令行选项是否可省略(仅选项可用)。 (11) metavar - 在使用方法消息中使用的参数值示例。

add_argument 方法详解


import argparse
import logging

"""
" File Description:
" dump model && deploy
"
" Created by zz on 2021/6/22.
" Mail: zz@baidu.com
"""
logging.basicConfig(level=logging.DEBUG)


def parse_args():
	ap = argparse.ArgumentParser(prog="deploy tool", description='dump or calib model && deploy')
	ap.add_argument("deploy_path", type=str, help="deploy base path")
	ap.add_argument("exp_name", type=str, help="train exp name")
	subparser = ap.add_subparsers(title="model deploy subparser", dest="mode")

	# subparser
	model_deploy_parser = subparser.add_parser("model", help="model deploy")
	model_deploy_parser.add_argument("--default", default=False, type=bool, help="whether that's default model")

	calib_deploy_parser = subparser.add_parser("calib", help="offline calib deploy")
	calib_deploy_parser.add_argument("--input", required=True, type=str, help="model offline calib file")

	args = ap.parse_args()
	return args

# global args
args = parse_args()
mode = args.mode
deploy_path = args.deploy_path
exp_name = args.exp_name

def main():
	if mode == "model":
		_deploy_model()
	elif mode == "calib":
		_deploy_calib()
	else:
		logging.error( "Mode error")

if __name__ == '__main__':
	main()

到此这篇关于 Python argparse 命令行参数解析的文章就介绍到这了,更多相关 Python argparse 命令行参数内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表