WMX · 随记
·Python· 3 分钟阅读

argparse:让命令行参数的约束靠近入口

手动读取 sys.argv 并按位置转换,很快会出现缺失参数、错误类型和帮助文案不一致。解析器可以集中表达这些规则。

Python 系列概览:输入校验、数据处理与行为验证
Python 系列概览:输入校验、数据处理与行为验证 点击图片查看大图 ↗

问题从哪里出现

手动读取 sys.argv 并按位置转换,很快会出现缺失参数、错误类型和帮助文案不一致。解析器可以集中表达这些规则。

理解核心机制

argparse 负责参数名、类型转换、默认值与帮助文本。自定义 type 可以验证单个值;涉及多个参数的关系,应在解析完成后单独检查。

动手做一个小实验

Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。

Python11 行 · 可横向滚动
import argparse
def positive(text):
    value = int(text)
    if value <= 0:
        raise argparse.ArgumentTypeError("must be positive")
    return value
parser = argparse.ArgumentParser(description="Process a small batch")
parser.add_argument("--batch-size", type=positive, default=10)
args = parser.parse_args(["--batch-size", "4"])
assert args.batch_size == 4
print(args)

适用边界与常见误区

示例显式传入参数列表以方便离线演示;真实入口通常调用 parse_args()。命令行内容也可能出现在进程列表中,不适合直接传递敏感凭据。

继续练习

增加 --dry-run 布尔开关和输出路径,尝试未知选项、缺失值以及负数,确认错误提示能帮助使用者修正输入。

参考资料

阅读相关官方文档或原始资料 ↗

← 返回文章归档