✨你好,我是筱可,欢迎来到「筱可AI研习社」!
🚀 标签关键词:| AI实战派开发者 | 技术成长陪伴者 | RAG前沿探索者 |
今天咱们就直接进入正题,聊聊基于Paddle平台构建的版面检测实战部分的argsparse命令部分的入门以及高级用法。
本次的主题是:
入门argparse
我们快快开始吧!
通过本文你将收获
🛠️ 学会常用的argparse方法以及高级的argparse用法
🔥 理解argparse有什么用
🚀 别人是如何使用argparse的
下篇文章预告:
《pdf提取逆天神器版面检测分析+版面识别,通过飞浆系列OCR提升pdf识别效果(2)》
目录
🚁前言
上一篇我们主要讲了《pdf提取逆天神器版面检测分析+版面识别,通过飞浆系列OCR提升pdf识别效果(2)》的基础使用步骤,也讲了一些关于我觉得Python里面非常优秀的PDF提取工具(如 pymupdf 和 pymupdf4llm)。今天突然插入一篇关于 argparse 的文章,主要是因为我在看 Paddle 这部分推理代码的时候发现,其实最重要的是学会看懂 argparse 的代码。通过 argparse 部分,我们可以更快地理解代码的原理,方便我们定位问题。所以今天有了这篇文章,下面我们开始吧!
🔐一、argsparse是什么
argparse
是 Python 标准库中用于解析命令行参数的一个模块。它的核心功能是帮助开发者从命令行中提取参数,并生成帮助信息。无论是简单的脚本还是复杂的命令行工具,argparse
都能胜任。 我们后续会使用飞桨平台构建一个小工具,到时候它有大作用哦,可以期待一下,说不定我会用rust配合python写哦!😄
核心结构
argparse
的核心是 ArgumentParser
对象,它的基本结构如下:
创建 ArgumentParser
对象:定义命令行工具的元信息(如描述、帮助信息等)。
添加参数:通过 add_argument()
方法定义需要解析的参数。
解析参数:使用 parse_args()
方法解析命令行输入,返回一个包含参数值的对象。
示例
import argparse
# 1. 创建 ArgumentParser 对象
parser = argparse.ArgumentParser(description='这是一个示例程序')
# 2. 添加参数
parser.add_argument('input_file', help='输入文件的路径')
parser.add_argument('-o', '--output', help='输出文件的路径', default='output.txt')
# 3. 解析参数
args = parser.parse_args()
# 4. 使用参数
print(f'输入文件: {args.input_file}')
print(f'输出文件: {args.output}')
🪶二、argsparse的结构
argparse
的核心结构可以分为以下几个部分:
ArgumentParser 对象:
- 负责定义命令行工具的元信息(如描述、帮助信息等)。
- 通过
add_argument()
方法添加参数。
- 通过
parse_args()
方法解析命令行输入。
参数定义:
位置参数(Positional Arguments):必须提供的参数。
可选参数(Optional Arguments):以 -
或 --
开头的参数。
参数类型(Type):指定参数的类型(如 int
、float
等)。
参数动作(Action):指定参数的行为(如 store_true
、append
等)。
参数数量(nargs):指定参数的数量(如 ?
、*
、+
等)。
参数选择(Choices):限制参数的取值范围。
解析与使用:
📄四、常用的argsparse用法
1. 位置参数(Positional Arguments)
位置参数是必须提供的参数,它们的顺序决定了它们在命令行中的位置。
示例
parser.add_argument('input_file', help='输入文件的路径')
命令行示例
python script.py input.txt
input.txt
会被赋值给 args.input_file
。
2. 可选参数(Optional Arguments)
可选参数通常以 -
或 --
开头,用于配置选项或开关。
示例
parser.add_argument('-o', '--output', help='输出文件的路径', default='output.txt')
命令行示例
python script.py input.txt -o output.txt
output.txt
会被赋值给 args.output
。 这里有小伙伴可能会感觉到疑惑,因为一会是-
,一会是--
,感觉头大了啊,其实啊,只需要二者选其一即可,-
相当于是短选项符方便使用的,不过也可以使用--
长选项,看你个人喜欢啦!
3. 参数类型(Type)
通过 type
参数指定参数的类型,例如 int
、float
、str
等。
示例
parser.add_argument('-n', '--number', type=int, help='输入一个整数')
命令行示例
python script.py input.txt -n 42
4. 参数动作(Action)
通过 action
参数指定参数的行为,例如 store_true
、store_false
、append
等。 action 参数用于指定参数的行为。常见的动作包括:
store:存储参数值(默认行为)。
store_true:如果提供了该参数,则存储 True,否则存储 False。
store_false:如果提供了该参数,则存储 False,否则存储 True。
append:将参数值存储为列表(允许多次使用该参数)。
示例
parser.add_argument('-v', '--verbose', action='store_true', help='启用详细模式')
命令行示例
python script.py input.txt -v
5. 参数数量(nargs)
通过 nargs
参数指定参数的数量。
nargs='?'
:0 或 1 个值。
nargs='*'
:0 或多个值。
nargs='+'
:1 或多个值。
nargs=N
:精确的 N 个值。
示例
parser.add_argument('files', nargs='+', help='一个或多个文件')
命令行示例
python script.py file1.txt file2.txt
args.files
的值为 ['file1.txt', 'file2.txt']
。
6. 参数选择(Choices)
通过 choices
参数限制参数的取值范围。
示例
parser.add_argument('--mode', choices=['fast', 'slow'], help='选择模式:fast 或 slow')
命令行示例
python script.py input.txt --mode fast
🦮五、高级的argsparse用法
1. 互斥参数
使用 add_mutually_exclusive_group()
创建互斥的参数组。
示例
group = parser.add_mutually_exclusive_group()
group.add_argument('--foo', action='store_true')
group.add_argument('--bar', action='store_true')
命令行示例
python script.py --foo
2. 子命令
使用 add_subparsers()
创建子命令。
示例
subparsers = parser.add_subparsers(dest='command')
# 创建 'init' 子命令
parser_init = subparsers.add_parser('init', help='初始化项目')
parser_init.add_argument('--name', required=True, help='项目名称')
# 创建 'build' 子命令
parser_build = subparsers.add_parser('build', help='构建项目')
parser_build.add_argument('--debug', action='store_true', help='调试模式')
命令行示例
python script.py init --name myproject
python script.py build --debug
总结
技术全景图
🔐 学会解析命令行参数
🤖 掌握高级功能(互斥参数、子命令)
🎮 理解 argparse
的使用场景
📑 自动生成帮助信息
学习汇总
🔒 位置参数、可选参数、默认值、类型检查
🎛️ 参数动作、互斥参数、子命令
💬 帮助信息与错误提示
📑 代码解耦与可维护性
动手挑战
编写一个命令行工具,支持位置参数和可选参数。
尝试使用子命令功能,实现一个多功能的命令行工具。
内容地图
下期预告: 《pdf提取逆天神器版面检测分析+版面识别,通过飞浆系列OCR提升pdf识别效果(2)》
互动问题
学会如何使用 argparse
了吗?
你能理解 argparse
在开发中的用法了吗?
你觉得你会喜欢使用 argparse
吗?
欢迎在留言区分享你的想法,每条留言我都会认真看!你的反馈就是我创作的最大动力 ❤️
来一句名言:
突变生于渐变,质变源于量变
——筱可
欢迎加入我们!
立即行动
点赞+喜欢+关注+分享给有需要的伙伴。
给公众号加星号。
在本地运行示例代码,体验完整流程。
(恭喜!您已获得 argsparse
入门手册一本,快快学起来吧!)
信息交流
入群交流 & 资料领取
⛄入群方式
☯资料领取
行动召唤
📢"与其等着AI改变世界,不如自己参与变革!在这儿,让AI成为你弯道超车的秘密武器。"