如果文件夹不存在则引发异常 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:except
块 b
仍然创建为 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
我正在努力实现一些记录保存的自动化,并正在尝试创建一个 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:except
块 b
仍然创建为 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