Python 3.x os.path.exists在try/except块中返回false,但未引发异常

Python 3.x os.path.exists在try/except块中返回false,但未引发异常,python-3.x,exception,Python 3.x,Exception,我正在尝试验证输入目录列表,如果目录不存在,则希望脚本引发错误。我不相信if not会在这里起作用,因为如果这些文件夹不存在(带有所需的输入文件[我对此有另一个验证]),那么脚本将无法运行 folder1 = "d:\\temp\\exists" folder2 = "d:\\temp\\notexists" list = [folder1, folder2] list #gives ['d:\\temp\\exists', 'd:\\temp\\notexists'] for l in li

我正在尝试验证输入目录列表,如果目录不存在,则希望脚本引发错误。我不相信if not会在这里起作用,因为如果这些文件夹不存在(带有所需的输入文件[我对此有另一个验证]),那么脚本将无法运行

folder1 = "d:\\temp\\exists"
folder2 = "d:\\temp\\notexists"
list = [folder1, folder2]
list #gives ['d:\\temp\\exists', 'd:\\temp\\notexists']

for l in list:
    try:
        os.path.exists(l)
        print("{0} folder exists...".format(l))
    except FileNotFoundError:
        print("{0} folder does not exist!".format(l))
os.path.exists
正确地将folder2标识为不存在,但不会引发异常:

True
d:\temp\exists folder exists...
False
d:\temp\notexists folder exists...

if…else
block应该可以完成这个任务

folder1 = "d:\\temp\\exists"
folder2 = "d:\\temp\\notexists"
list = [folder1, folder2]
list #gives ['d:\\temp\\exists', 'd:\\temp\\notexists']

for l in list:
    if os.path.exists(l)
        print("{0} folder exists...".format(l))
    else:
        print("{0} folder does not exist!".format(l))

如果希望代码停止并引发错误:

for l in list: 
    if os.path.exists(l): 
        print("{0} folder exists...".format(l))
   else:
      raise FileNotFoundError("{0} folder does not exist!".format(l))

您可以无错误地访问该代码,因此代码不会转到异常块。path.exists提供一个布尔值,告诉您路径是否存在,因此即使它不调用
os.path.exists
,如果文件不存在也不会引发任何错误(它只返回
False
)。为什么您认为会在代码中引发
FileNotFoundError
?您可以引发一个通用异常,如“我希望它停止代码并引发错误”。谢谢。如果文件夹不存在,其余代码将无法正常运行。谢谢