如果文件夹不存在则引发异常 pathlib python

raising an exception if a folder doesn't exist pathlib python

我正在努力实现一些记录保存的自动化,并正在尝试创建一个 class 代表存储记录的文件夹。

我想抛出一个异常,或者如果文件夹没有退出则class创建失败


from pathlib import Path

class Records:
    
    def __init__(self, location):
        self.location = location
         if Path(f'{self.location}').exists:
            pass
         else:
            print('No folder exists at the location specified')

a = Records('path\to\a\dir')
b = Records('not\a\real\dir')

print(a.location)
print(b.location)

我已经用各种排列测试了上面的内容,我已经尝试了 try:exceptb 仍然创建为 Records 对象,即使该文件夹不存在。

任何指导将不胜感激。

I want to raise an exception

要引发异常,您必须明确调用 raise

or make the class creation fail if the folder doesn't exit

请更具体一些,因为 fail 不够精确。引发异常将导致您的程序在未被捕获的情况下停止。

如果您想专门检查文件夹,您可能应该使用 is_dir 而不是 exists。无论哪种方式,您都应该添加括号来调用它。 然后,正如 Emmanuel 所说,如果您希望 class 创建失败,您可以引发错误。这里的 FileNotFound 错误可能是一个很好的候选者:

class Records:

    def __init__(self, location):
        self.location = location
        if Path(f'{self.location}').is_dir(): # don't forget ()
            pass
        else:
            raise FileNotFoundError('No folder exists at the location specified')

之后您可以通过多种方式在代码中处理它。如果您希望代码在 class 创建失败时崩溃,只需调用它即可。

b = Records('not\a\real\dir') # causes program to crash with a FileNotFoundError

如果您希望您的程序继续,请执行

try:
     b = Records('not\a\real\dir')
except FileNotFoundError:
     print("The class could not be created as the specified folder does not exist")

# do other stuff here, calling b will fail though