python - 在 Python 中对磁盘 I/O 错误进行排序

标签 python exception

如何从“尝试写入只读文件系统”中找出(区分)源自“磁盘已满情况”的错误? 我不想填满我的高清来找出:) 我想要的是知道谁来捕获每个异常,这样我的代码可以在用户尝试写入 ReadOnly FS 时向用户说些什么,如果用户试图在已满的磁盘中写入文件,我的代码可以告诉用户另一条消息。

最佳答案

一旦捕获到 IOError,例如使用 Python 2.* 中的 except IOError, e: 子句,您可以检查 e.errno 以准确找出它是哪种 I/O 错误(不幸的是一种在不同操作系统之间不一定完全可移植的方式)。

参见 errno Python 标准库中的模块;在 R/O 文件系统(在合理的操作系统上)上打开要写入的文件应该生成 errno.EPERMerrno.EACCES 或更好的 errno.EROFS ("只读文件系统");如果文件系统是 R/W 但没有剩余空间,您应该得到 errno.ENOSPC(“设备上没有剩余空间”)。但是您需要在您关心的操作系统上进行试验(用一个小的 USB key 填充它应该很容易;-)。

没有办法根据 errno 使用不同的 except 子句——这样的子句必须通过它们捕获的异常的 class 来区分,而不是通过异常实例的属性-- 所以你需要在单个 except IOError, e: 子句中进行 if/else 或其他类型的调度。

关于python - 在 Python 中对磁盘 I/O 错误进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1115203/

相关文章:

python - 将可选参数传递给例如 ax.set(ylabel=...)

c# - 我如何定义一个检查整数列表

c# - 在我进入 .NET 中的 finally block 之前是否有可能检测到是否发生了异常?

c# - 所有方法中的异常记录

python - 为什么这个理解会返回一个生成器?

python - 计算 pandas DataFrame 中的子词频率

python - 按 Enter 而不是单击按钮

Python 使用原始迭代器追加列表

java - 未抛出异常时捕获异常

java - Android Exoplayer音频播放异常