我正在尝试了解Windows 8上的Python 2.7.6的异常。
这是我正在测试的代码,旨在在My_New_Dir
上创建一个新目录。如果目录已经存在,我想删除整个目录及其内容,然后创建一个新目录。
import os
dir = 'My_New_Dir'
try:
os.mkdir(dir)
except IOError as e:
print 'exception thrown'
shutil.rmtree(dir)
os.mkdir(dir)
问题是,永远不会抛出异常。如果该目录尚不存在,则代码可以正常运行,但是如果该目录确实存在,则出现错误:
但是根据os.mkdir()的Python文档,
那么,为什么会引发Windows错误而不是Python异常呢?
最佳答案
WindowsError
是OSError
的子类。从exceptions documentation:
但是,您正在 try catch IOError
,这不是WindowsError
的父类;结果,捕获OSError
和WindowsError
都不够。
更改您的代码以在此处使用正确的异常:
try:
os.mkdir(dir)
except OSError as e:
或者使用
WindowsError
;这会将您的代码绑定(bind)到Windows平台。