跳到正文
效率工具实用笔记关于本站
效率工具

给Python工具添加命令参数:argparse的--name与--count基础示例

约 7 分钟阅读AI 辅助整理

用自建脚本演示如何用argparse添加一个--name参数和一个--count参数,设置默认值并生成帮助信息。只读取命令行参数并打印结果,不执行外部命令,适合初学者在练习目录中操作。

本文要点

  1. 第一步是创建 ArgumentParser 对象,再用 add_argument() 挂上参数

  2. 第二个参数 --count 用来接收一个整数

  3. 两个参数都加好后,可以把它们组合起来打印,验证解析是否符合预期

给Python工具添加命令参数:argparse的--name与--count基础示例的知识要点示意图
依据已审核正文摘取要点制作的示意图,非实物照片;请结合正文中的条件与范围阅读。要点摘自已审核正文;完整条件与说明见正文。查看高清图解 ↗
本文目录

先明确要解决的问题:让脚本从命令行接收名字和次数

假设你写了一个自建的小脚本,希望运行时能通过命令行告诉它“叫什么名字”和“重复几次”,而不是每次打开文件改代码。argparse 就是为这种场景准备的:程序自己声明需要哪些参数,argparse 负责从 sys.argv 里解析出来,并自动生成帮助和用法信息。

本文只做一件事:给一个练习脚本添加两个可选参数——一个 --name 用来接收字符串,一个 --count 用来接收整数,各自带默认值,并能通过 -h 查看帮助。脚本只把解析结果打印出来,不执行任何外部命令,也不读写系统文件。

动手前建议在练习目录里新建脚本,例如 exercise/arg_demo.py,不要拿正在用的工具直接改。下面所有内容都是自建练习示例。

创建解析器并添加--name:默认值在参数缺席时生效

第一步是创建 ArgumentParser 对象,再用 add_argument() 挂上参数。--name 是一个可选参数,写法以两个连字符开头。

按 argparse 文档,add_argument() 的 default 参数指定“命令行里没有这个参数时用什么值”。对可选参数来说,只有选项字符串没出现时,default 才会被采用。

下面这段只创建解析器、添加 --name 并打印结果,不调用任何外部程序:

import argparse

parser = argparse.ArgumentParser(
    prog="arg_demo",
    description="演示 --name 与 --count 两个参数"
)
parser.add_argument("--name", default="练习用户", help="要显示的名字")

args = parser.parse_args()
print("name =", args.name)

运行时不带 --name,args.name 就是默认值“练习用户”;带上 --name 张三,args.name 就是“张三”。注意 default 只在参数缺席时生效,命令行里给了值就以命令行为准。

添加--count并指定type=int:让次数变成整数而不是字符串

第二个参数 --count 用来接收一个整数。如果不指定 type,argparse 会把命令行里的值当成字符串存起来,后面做数值运算就会出错。

按文档,type 参数指定命令行参数应被转换成的类型。给 --count 加上 type=int,解析结果就是整数。

在上一段脚本基础上追加一行:

parser.add_argument("--count", type=int, default=1, help="重复次数,默认 1")

这里 default=1 是整数,不是字符串。文档提到,如果 default 是字符串,解析器会像处理命令行参数一样对它应用 type 转换;直接写整数则按原值使用。两种写法都能得到整数,但直接写整数更直观。

运行时不带 --count,args.count 是 1;带 --count 3,args.count 是整数 3。

用解析结果组织输出:把两个参数拼成一句话

两个参数都加好后,可以把它们组合起来打印,验证解析是否符合预期。下面这段只打印文本,不写文件、不执行命令:

args = parser.parse_args()
print(f"{args.name} 出现了 {args.count} 次")

输入与输出对照(自建示例):

- 输入:python exercise/arg_demo.py

输出:练习用户 出现了 1 次

- 输入:python exercise/arg_demo.py --name 张三 --count 3

输出:张三 出现了 3 次

这里能核对两件事:参数缺席时默认值是否生效,参数给出时值是否被正确接收。如果输出里 count 带引号,说明 type=int 没生效或没写。

查看帮助信息:-h会自动列出参数和默认值说明

argparse 会自动生成帮助信息。按文档,ArgumentParser 默认添加 -h/--help 选项,输入它就会打印帮助并退出。

运行:

python exercise/arg_demo.py -h

你会看到用法行、description 文本,以及两个参数各自的 help 文字。用法行里会显示 --name 和 --count 的占位名称。

有一点要分清:help 里写的是你填的说明文字,default 的值默认不会自动出现在帮助里。如果你希望帮助信息里带上默认值,文档提供了 ArgumentDefaultsHelpFormatter 这个格式化类,把它传给 formatter_class 即可。本文不展开这个类,只说明默认帮助不显示默认值这一点,避免你误以为帮助里没写就是没有默认值。

参数写错时会看到什么:错误提示与退出码

如果命令行里给了 argparse 不认识的参数,或者 --count 后面跟了不能转成整数的内容,解析会失败。

按文档,当传给 parse_args() 的参数列表无效时,默认会向 sys.stderr 打印错误信息,并以状态码 2 退出。例如把 --count 写成 abc,会看到类似“invalid int value”的提示。

排查顺序建议如下(编辑整理的检查方向,不是对某次运行的记录):

1. 先看错误信息里点名的是哪个参数,通常格式是“argument --count: ...”。

2. 检查参数名拼写,注意是两个连字符。

3. 检查 --count 后面的值能不能转成整数。

4. 确认没有把值写在参数名之前。

这些提示由 argparse 自动产生,不需要你手写错误处理。本文不涉及 exit_on_error 等改变这一行为的参数。

使用限制与参考资料

本文只覆盖一个 --name 和一个 --count 两个可选参数、各自的 default、--count 的 type=int,以及自动帮助信息。不涉及位置参数、子命令、nargs、choices、互斥组等其它能力。

一个边界:argparse 是标准库推荐的命令行解析模块,但文档也指出,如果应用对命令行行为有更精确的要求(例如完全禁用选项与位置参数交错,或接受以连字符开头的选项值),可能需要考虑其它解析库。本文不比较这些库。

所有示例都只操作自建的 exercise/arg_demo.py,只解析参数并打印,不执行外部命令、不修改系统设置。动手前请确认脚本是你自己新建的练习文件。

参考资料:Python 官方 argparse 文档,https://docs.python.org/3/library/argparse.html

观看知识要点视频 18 秒

18秒无旁白要点导览,文字来自已审核正文;完整步骤、条件及参考资料见下方。

参考资料

以下原始资料提供本文依据;请结合日期、适用条件和产品说明查阅。

请结合原始资料的适用条件阅读。

返回效率工具 →