You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

未传命令行参数时用默认函数参数触发IndexError问题求助

问题排查与解决

错误原因

当没有向脚本传递命令行参数时,sys.argv列表仅包含一个元素(脚本自身的路径/名称),此时直接访问sys.argv[1]会触发IndexError,因为该索引不存在。

修复方案

方案1:检查参数数量后取值

通过判断sys.argv的长度是否大于1,确认存在额外参数后再取值:

#!/usr/bin/env python3

import sys

def get_file_name(filename: str = "watched_movies"):
    if len(sys.argv) > 1:
        filename = sys.argv[1]
    return filename
    
print(get_file_name())

方案2:用三元表达式简化逻辑

可以将判断逻辑简化为一行:

#!/usr/bin/env python3

import sys

def get_file_name(filename: str = "watched_movies"):
    return sys.argv[1] if len(sys.argv) > 1 else filename
    
print(get_file_name())

方案3:使用argparse模块(推荐)

如果后续需要处理更复杂的命令行参数,Python标准库的argparse模块是更规范的选择,它原生支持可选参数和默认值:

#!/usr/bin/env python3

import argparse

parser = argparse.ArgumentParser()
# nargs='?'表示该参数可选,未传递时使用default指定的值
parser.add_argument("filename", nargs='?', default="watched_movies")
args = parser.parse_args()

print(args.filename)

内容的提问来源于stack exchange,提问作者wilk85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:15:02