sys.argv适合简单场景,argparse更适合正式项目;前者仅提供原始参数列表,需手动解析和校验,后者支持自动帮助、类型检查、默认值及子命令等高级功能。
Python脚本接收命令行参数,
适合简单场景,
更适合正式项目——它自动处理帮助信息、类型校验、参数组合和错误提示。
用
快速获取原始参数
是一个列表,
是脚本名,后续元素是传入的字符串参数。它不解析结构,也不做类型转换,适合写一次性小工具或调试时快速取值。
直接访问索引即可:比如
中,
是
,
是
需手动判断参数是否存在、是否符合预期格式,否则容易触发
或类型错误
不支持
、默认值、选项分组等特性,也不校验参数合法性
用
规范化定义和解析参数
是 Python
标准库
中推荐的参数解析模块,适用于需要可维护性、可读性和用户友好性的脚本。
声明式定义参数:用
明确指定名称、类型(
)、是否必需(
)、默认值(
)等
自动支持短选项(
)、长选项(
)、位置参数、可选参数、互斥组(
)
调用
后返回命名空间对象,属性名即参数名(如
),无需索引操作
输入
或参数错误时,自动输出清晰的帮助文本,无需额外
编码
常见搭配与实用技巧
实际使用中,常结合两者优势或补充功能:
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
立即学习
“
Python免费学习笔记(深入)
”;
位置参数 + 可选参数混合:例如
支持子命令:用
实现类似
、
的多模式脚本
从
配置文件
或
环境变量
回退:
解析后,可用
或
做兜底
自定义类型函数:传入
,在解析阶段就校验日期格式并抛出易懂错误
什么时候该选哪个?
判断依据主要是脚本用途和协作需求:
单人临时脚本、测试用例、CI 中简单调用 →
足够轻量
要交付给他人、需文档化、可能频繁更新参数、涉及多个选项组合 → 必须用
已有老脚本用
,但开始出现
这类硬编码判断 → 是重构为
的明确信号
sys.argvargparsesys.argvsys.argvargv[0]python script.py input.txt -vsys.argv[1]"input.txt"sys.argv[2]"-v"IndexError--helpargparseargparseadd_argument()type=intrequired=Truedefault="log.txt"-f--fileadd_mutually_exclusive_group()parser.parse_args()args.input--helppython convert.py source.json --output target.yaml --format yamladd_subparsers()git commitgit pushargparseos.getenv()configparsertype=valid_datesys.argvargparsesys.argvif len(sys.argv) < 3:argparse