Python调用sys.argv时报IndexError: list index out of range如何修复
问题原因
- 参数长度校验逻辑放在了参数取值操作之后,当运行脚本时传入的参数数量不足时,提前访问
sys.argv[1]到sys.argv[4]就会直接触发索引越界错误,后续的长度判断代码完全不会执行。 - 你写的三元表达式
if len(sys.argv) >= 5 else 0没有绑定赋值对象,校验逻辑没有实际生效。
修复方案
先做参数长度校验,确认参数足够后再进行取值操作,也可以给参数配置默认值适配无参数传入的场景,示例修复代码如下:
import sys # 先校验参数数量 if len(sys.argv) < 5: print("参数不足,运行格式为:python 脚本名.py <op参数> <t参数> <x参数> <y参数>") sys.exit(1) # 确认参数足够后再取值 op = sys.argv[1] t = sys.argv[2] x = sys.argv[3] y = sys.argv[4]
如果需要支持参数不足时自动用默认值填充,可以这么写:
import sys op = sys.argv[1] if len(sys.argv) >= 2 else "默认op值" t = sys.argv[2] if len(sys.argv) >= 3 else "默认t值" x = sys.argv[3] if len(sys.argv) >= 4 else "默认x值" y = sys.argv[4] if len(sys.argv) >= 5 else "默认y值"
内容的提问来源于stack exchange,提问作者Javier Prieto
相关产品推荐
相关产品推荐

