如何从"尝试写入只读文件系统"中挑选(区分)从"磁盘已满状态"派生的错误?我不想填写我的HD来找出:)我想知道是谁捕获每个异常,所以我的代码可以在用户尝试写入ReadOnly FS时向用户说些什么,如果是用户正在尝试在已满的磁盘中写入文件.
Ale*_*lli 10
一旦你捕获IOError,例如使用except IOError, e:Python 2.*中的一个子句,你可以检查e.errno以确切地找出它是什么类型的I/O错误(遗憾的是,它不一定在不同的操作系统之间完全可移植).
请参阅Python标准库中的errno模块; 打开一个文件写在R/O文件系统(在一个合理的操作系统上)应该产生errno.EPERM,errno.EACCES或者更好errno.EROFS("只读文件系统"); 如果文件系统是R/W但是没有剩余空间你应该得到errno.ENOSPC("设备上没有空间").但是你需要在你关心的操作系统上进行试验(用一个小的USB密钥来填充它应该很容易;-).
except根据errno,没有办法使用不同的子句 - 这些子句必须通过它们捕获的异常类来区分,而不是通过异常实例的属性来区分- 所以你需要在一个if/else或其他类型的调度中单一except IOError, e:条款.
| 归档时间: | 
 | 
| 查看次数: | 3545 次 | 
| 最近记录: |