在python中,我已经创建了一个函数来创建一个目录(如果该目录尚不存在)。
def make_directory_if_not_exists(path):
try:
os.makedirs(path)
break
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
在Windows上,有时我会得到以下异常:
WindowsError: [Error 5] Access is denied: 'C:\\...\\my_path'
在Windows文件浏览器中打开目录时似乎会发生这种情况,但我无法可靠地重现它。所以我只是做了以下解决方法。
def make_directory_if_not_exists(path):
while not os.path.isdir(path):
try:
os.makedirs(path)
break
except OSError as exception:
if exception.errno != errno.EEXIST:
raise
except WindowsError:
print "got WindowsError"
pass
这里发生了什么,即Windows mkdir
何时发出此类访问错误?有更好的解决方案吗?
答案 0 :(得分:4)
您应该使用OSError以及IOError。请参阅this回答,您将使用以下内容:
def make_directory_if_not_exists(path):
try:
os.makedirs(path)
except (IOError, OSError) as exception:
if exception.errno != errno.EEXIST:
...
答案 1 :(得分:2)
一个小小的谷歌搜索显示这个错误在各种不同的上下文中引发,但大多数都与权限错误有关。该脚本可能需要以管理员身份运行,或者可能使用您尝试使用的其中一个目录打开另一个程序。
答案 2 :(得分:0)
关于更好的解决方案的问题,我会在这里使用简单明了的三行代码:
def make_directory_if_not_exists(path):
if not os.path.isdir(path):
os.makedirs(path)