python argparse

Python argparse 模块使用指南

argparse 是 Python 标准库中用于构建命令行工具的核心模块,支持参数解析、自动生成帮助信息及错误处理‌。以下是其核心功能和使用方法:

1.基础用法‌

步骤‌:

创建解析器‌:通过 ArgumentParser 初始化解析器对象,定义程序描述信息‌。
import argparse
parser = argparse.ArgumentParser(description=”程序描述”)

添加参数‌:
位置参数‌:必须按顺序传递的参数。
parser.add_argument(“input_file”, help=”输入文件路径”)

可选参数‌:以 – 或 — 开头的参数,支持短/长格式‌。
parser.add_argument(“-v”, “–verbose”, action=”store_true”, help=”启用详细模式”)

解析参数‌:调用 parse_args() 获取解析结果‌。
args = parser.parse_args()
print(args.input_file)

2.参数类型与配置‌
类型约束‌:通过 type 指定参数类型(如 int、float)‌。
parser.add_argument(“–size”, type=int, default=10, help=”数值大小”)

必需参数‌:设置 required=True 强制用户输入‌。
parser.add_argument(“-o”, “–output”, required=True)

互斥参数‌:通过 add_mutually_exclusive_group() 创建互斥参数组‌。
group = parser.add_mutually_exclusive_group()
group.add_argument(“–enable”, action=”store_true”)
group.add_argument(“–disable”, action=”store_true”)

3.高级功能‌
子命令‌:利用子解析器实现多级命令(类似 git commit 结构)‌。
subparsers = parser.add_subparsers()
parser_a = subparsers.add_parser(“cmd1″, help=”子命令1”)
parser_a.add_argument(“–option”)

参数动作‌:通过 action 定义参数行为(如 store_true 存储布尔值)‌。
parser.add_argument(“–debug”, action=”store_true”)

4.最佳实践‌
清晰的帮助信息‌:为每个参数添加 help 描述,提升工具易用性‌。
默认值设置‌:通过 default 提供合理的默认值,减少用户输入负担‌。
错误处理‌:依赖 argparse 自动验证参数合法性,避免手动校验‌。
完整示例‌

import argparse

def main():
    parser = argparse.ArgumentParser(description="文件处理工具")
    parser.add_argument("input", help="输入文件路径")
    parser.add_argument("-o", "--output", help="输出文件路径", default="output.txt")
    parser.add_argument("--size", type=int, default=100, help="处理尺寸")
    parser.add_argument("-v", "--verbose", action="store_true", help="详细模式")
    args = parser.parse_args()

    if args.verbose:
        print(f"正在处理 {args.input},输出到 {args.output}")

if __name__ == "__main__":
    main()

运行示例‌:

python script.py input.txt -o result.txt –size 200 -v

总结‌

argparse 提供了灵活的命令行参数解析能力,适用于从简单脚本到复杂工具的开发。通过合理使用参数类型、子命令和互斥逻辑,可以构建用户友好的 CLI 应用‌。

来源链接:https://www.cnblogs.com/weifexie/p/18831234

© 版权声明
THE END
支持一下吧
点赞12 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容