python - Try 块捕获错误的异常
问题描述
我正在尝试创建一个文件夹,处理不同的错误(FileExistsError
如果文件夹已经存在并且OSError
文件夹的名称包含非法字符),但无论是哪个错误,Python 似乎总是在捕获错误时选择第一个 except 块并且它们的顺序。
有什么我不明白的吗?
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
推荐阅读
- c++ - 无法加载库 *.dll 未知错误 0x000000c1
- python-3.x - Tkinter 删除按钮使错误列表索引超出范围
- php - Codeigniter 3 应用程序错误:登录用户的头像没有实时更新
- python - 在python中带有变量的SQL Like语句
- node.js - 我在 ionic 中使用 tesseract.js 从图像中提取文本。现在有没有办法在键值对中表示提取的文本?
- excel - 将字符串添加到内容控件框/将下拉列表替换为内容控件
- r - 在R中分配向量的一半
- ansible - Ansible 剧本 - 什么是剧本?
- python - 将文件从 lambda 推送到 s3
- android - 应用程序关闭后,用于媒体控件的 Android 广播接收器停止工作