Python使用pathlib时文件夹不存在如何抛出异常阻止类实例化
问题核心原因
你的代码存在三个问题导致没有实现预期效果:
- 你调用
Path.exists时没有加括号,它是方法不是属性,直接写exists拿到的是方法对象本身,Python中非空对象的布尔判断永远为真,所以你写的条件判断永远走pass分支,没有触发错误逻辑。 - 你当前的错误处理只是打印提示,没有抛出异常,
__init__方法会正常执行完成,实例自然会被成功创建。 - 原代码中
if语句前多了多余缩进,运行会直接报语法错误。
修改后可直接运行的代码
from pathlib import Path class Records: def __init__(self, location): self.location = Path(location) # 校验路径必须存在且是文件夹 if not self.location.is_dir(): raise FileNotFoundError(f'No folder exists at the location specified: {self.location}') a = Records('path\\to\\a\\dir') # 下面的实例化会直接抛出异常,终止执行,b不会被创建 b = Records('not\\a\\real\\dir') print(a.location) print(b.location)
补充说明
如果想要捕获异常避免程序直接退出,可以在实例化时增加try-except块处理:
try: b = Records('not\\a\\real\\dir') except FileNotFoundError as e: print(e) # 此处b不会被创建
只要指定路径不存在,或者路径指向的不是文件夹,就会直接抛出异常中断__init__的执行流程,不会生成类实例,完全符合你的需求。
内容的提问来源于stack exchange,提问作者KevOMalley743
相关产品推荐
相关产品推荐

