无法解决Python中的UnboundLocalError

1 投票
2 回答
660 浏览
提问于 2025-04-18 08:14

这个代码块是在一个函数里面的:

try:
    os.makedirs(os.path.dirname(log))
except OSError:
    pass

出现的错误:

UnboundLocalError: local variable 'OSError' referenced before assignment

这可能是什么问题的表现呢?

2 个回答

2

你的代码在某个地方把 OSError 这个名字赋值了,这就意味着编译器把它当作一个局部变量了。你需要检查一下所有出现这个名字的地方,确保你没有用错它。

4

在Python 2中,处理异常的写法有点让人困惑。在某个函数里,你可能写了类似下面的代码:

except SomeError, OSError:

看起来好像是要捕捉两种异常类型,但其实不是。OSError 实际上被解释成了一个变量名,用来存放你捕捉到的SomeError实例。这意味着当你尝试捕捉OSError时:

except OSError:

OSError指的是你不知道自己创建的一个局部变量。

如果你想捕捉多种异常类型,你需要把这些类型用括号括起来:

except (SomeError, OSError):

撰写回答