python - Try block 捕获错误的异常

标签 python python-3.x python-os

我正在尝试创建一个文件夹,处理不同的错误(如果文件夹已存在,则为 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/

相关文章:

python - 具有多索引的 Pandas 分区 (.div)

python - argparse:确定使用了哪个子解析器

python - 在 os.walk() 期间找到绝对路径的更好方法?

python os.listdir 遇到 OSError : [Errno 13] Permission denied

python - 扫描文件夹时出现各种错误

python - 在python中删除文本文件的第一行

python - 如何修复我的敌人不消失的错误?

python - 奇怪的错误: ZeroDivisionError: float division by zero

python - SQL 查询返回 "None"而不是行

python os.rename目录不为空