argparse.Namespace
、argparse.ArgumentParser
和 .parse_args()
之间的关系是:argparse.ArgumentParser
创建一个解析器对象,并使用 .parse_args()
方法解析命令行参数,将解析结果存储在 argparse.Namespace
对象中。以下是详细的解释:
argparse.Namespace
argparse.Namespace
是一个简单的类,用于存储属性(命令行参数)。Namespace
对象可以直接用于存储解析后的命令行参数,或者可以通过 .parse_args()
方法自动生成。
示例
import argparse
# 创建一个空的 Namespace 对象
ns = argparse.Namespace(foo='bar', baz=42)
print(ns)
输出
Namespace(foo='bar', baz=42)
argparse.ArgumentParser
argparse.ArgumentParser
是命令行参数解析器的核心类。它负责:
定义:定义命令行参数及其属性(名称、类型、帮助信息等)。
解析:通过 .parse_args()
方法解析命令行参数。
核心功能:
add_argument()
:添加新的参数
parse_args()
:解析命令行参数
description
、epilog
、usage
:描述信息
示例
import argparse
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='ArgumentParser Example.')
# 添加命令行参数
parser.add_argument('--foo', type=int, help='An integer argument')
parser.add_argument('--bar', type=str, help='A string argument')
parser.add_argument('--flag', action='store_true', help='A boolean flag')
.parse_args()
ArgumentParser.parse_args()
方法负责解析命令行参数。它将解析后的结果存储到一个 argparse.Namespace
对象中,并返回该对象以供访问。
示例
import argparse
# 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='ArgumentParser Example.')
# 添加命令行参数
parser.add_argument('--foo', type=int, help='An integer argument')
parser.add_argument('--bar', type=str, help='A string argument')
parser.add_argument('--flag', action='store_true', help='A boolean flag')
# 解析命令行参数
args = parser.parse_args()
# 通过 Namespace 对象访问解析的参数
print(f"Foo: {args.foo}")
print(f"Bar: {args.bar}")
print(f"Flag: {args.flag}")
三者之间的关系
ArgumentParser 创建与定义参数: ArgumentParser
对象负责定义命令行参数(例如 add_argument
)并提供解析方法。
parse_args 解析参数: .parse_args()
方法解析命令行参数,将其转换为 argparse.Namespace
对象。
Namespace 存储结果: Namespace
对象是 .parse_args()
返回的结果,存储所有解析后的命令行参数。
完整示例
import argparse
# 1. 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='Full Example.')
# 2. 添加参数
parser.add_argument('--foo', type=int, help='An integer argument')
parser.add_argument('--bar', type=str, help='A string argument')
parser.add_argument('--flag', action='store_true', help='A boolean flag')
# 3. 解析参数
args = parser.parse_args()
# 4. 使用解析结果
print(f"Foo: {args.foo}")
print(f"Bar: {args.bar}")
print(f"Flag: {args.flag}")