python命令行参数处理推荐用argparse,sys.argv仅适用于简单场景;前者支持自动帮助、类型校验、子命令等,后者仅提供原始字符串列表且需手动处理。

Python中处理命令行参数主要有两种方式:简单场景用 sys.argv,规范项目推荐用 argparse。前者轻量直接,后者支持自动帮助生成、类型校验、子命令等,更适合可维护的脚本。
sys.argv:最基础的参数获取方式
sys.argv 是一个列表,包含运行 Python 脚本时输入的所有命令行字符串,argv[0] 是脚本文件名,后续元素是传入的参数。
- 适合快速测试或极简工具(比如
python script.py input.txt -v) - 所有参数都是字符串,需手动转换类型(如
int(sys.argv[1])) - 无内置错误提示,参数缺失或格式错需自己检查并
print提示 - 不支持短选项合并(如
-abc)、长选项(--help)、默认值等特性
argparse.ArgumentParser:推荐的标准做法
argparse 是 Python 标准库中专为命令行解析设计的模块,能自动生成帮助信息、校验参数合法性,并支持复杂结构(如子命令、互斥组)。
- 先创建解析器:
parser = argparse.ArgumentParser(description="描述用途") - 添加参数:
parser.add_argument("-f", "--file", type=str, required=True, help="输入文件路径") - 解析调用:
args = parser.parse_args(),返回命名空间对象,如args.file - 运行
python script.py -h自动输出格式化帮助,无需额外编码
常见实用技巧
实际使用中常遇到这些需求:
立即学习“Python免费学习笔记(深入)”;
-
可选参数带默认值:用
default="value",避免required=False和手动判断 -
布尔开关参数:用
action="store_true",如--verbose触发args.verbose == True -
多个位置参数:用
nargs="+"接收至少一个,nargs="*"接收零个或多个 -
限制取值范围:用
choices=["a", "b"]或自定义type=函数做校验
什么时候选哪个?
单行调试或临时脚本,sys.argv 足够快;只要脚本可能被他人使用、需要文档、或未来会扩展功能,就该用 argparse。它写的多几行,但省下的维护成本和用户困惑远超这点开销。










