我正在尝试创建一个文件夹,处理不同的错误(如果文件夹已存在,则为 FileExistsError
;如果文件夹的名称包含非法字符,则为 OSError
),但是 Python当捕获错误时,似乎总是选择第一个 except block ,无论它是哪个错误以及它们的顺序。
有什么我不明白的吗?
import os
from pathlib import Path
def generateSetup(name) :
dir_path = os.path.dirname(os.path.realpath(__file__))
if not Path(dir_path + '/setups').exists() : os.mkdir(dir_path + '/setups')
try : os.mkdir(dir_path + '/setups/' + name)
except FileExistsError : print('The file already exists')
except OSError : print('The name contains illegal characters')
stp_name = input('Enter your setup\'s name :')
generateSetup(stp_name)
最佳答案
你的代码没有任何问题。它按预期正常工作,如果目录已存在,则捕获 FileExistsError
;如果目录名称包含无效符号,则捕获 OSError
。所以我认为问题出在您测试代码的方式
>>> dloc='tmp/\/b'
>>> try:
... os.mkdir(dloc)
... except FileExistsError:
... print('The file already exists')
... except OSError:
... print('The name contains illegal characters')
...
The name contains illegal characters
关于python - Try block 捕获错误的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51379974/