本文要点
第一步是创建 ArgumentParser 对象,再用 add_argument() 挂上参数
第二个参数 --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秒无旁白要点导览,文字来自已审核正文;完整步骤、条件及参考资料见下方。
参考资料
以下原始资料提供本文依据;请结合日期、适用条件和产品说明查阅。
请结合原始资料的适用条件阅读。
返回效率工具 →