读懂 argparse:从命令行参数到程序运行模式

下面这段代码常出现在 RAG 项目的入口:不带开关时运行查询流程,带上
--data-processing 时运行资料处理流程。

import argparse

parser = argparse.ArgumentParser(description="EduRAG 程序入口")
parser.add_argument("--data-processing", action="store_true",
                    help="运行资料处理模式")
parser.add_argument("--data-dir", default="./data",
                    help="资料目录,默认为 ./data")
args = parser.parse_args()

要读懂它,沿着“声明规则—解析输入—读取属性—调用业务函数”这条路径看即可。

创建解析器:声明接口说明

ArgumentParser 是解析器对象。description
用于帮助信息,不会改变业务行为。

用户执行 python main.py --help
时,解析器会生成参数说明并退出。帮助输出是命令行接口的一部分,不需要再手工编写另一套说明。Python argparse
文档

布尔开关:出现即为 True

action="store_true" 表示:参数出现时保存
True,未出现时默认保存 False。

python main.py
→ args.data_processing 为 False

python main.py --data-processing
→ args.data_processing 为 True

不需要写 --data-processing True。后面的
True 会被视为另一个参数,通常导致解析错误。

参数名与属性名不完全相同

命令行通常用短横线,Python
属性使用下划线。默认情况下,--data-dir 对应
args.data_dir,--data-processing 对应
args.data_processing。

未提供目录时,值为 "./data";提供
--data-dir ./course_data 时,值为
"./course_data"。相对路径基于启动程序时的工作目录,不一定是脚本所在目录。

最后一步才是业务调用

main(query_mode=not args.data_processing, directory_path=args.data_dir)
命令行 data_processing query_mode 运行意图
不带模式开关 False True 查询
带 –data-processing True False 资料处理

argparse 只完成参数解析,不会自行调用
RAG、创建目录或验证业务规则。main 必须由项目定义。

一个独立运行的小例子

以下程序只打印分支,不执行真实资料入库:

import argparse

def run(query_mode, directory_path):
    mode = "查询模式" if query_mode else "资料处理模式"
    print(f"模式:{mode};目录:{directory_path}")

def main():
    parser = argparse.ArgumentParser(description="演示模式切换")
    parser.add_argument("--data-processing", action="store_true")
    parser.add_argument("--data-dir", default="./data")
    args = parser.parse_args()
    run(query_mode=not args.data_processing, directory_path=args.data_dir)

if __name__ == "__main__":
    main()

把它保存为
main.py,分别运行有开关和无开关的命令,就能看到布尔值如何改变业务入口。

自测:为什么 --data-processing 为
True,query_mode 却为 False?因为入口显式使用了
not,两者表达互斥的运行模式。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇