检查Python中是否已经创建了一个目录

3

一个非常基础的问题,我有一个模块可以动态创建目录,但是有时候我想把多个文件放在一个目录中。如果这种情况发生,Python会引发异常并说该目录已经被创建了,我该如何避免这种情况并检查目录是否已经被创建了?

保存模块看起来像这样:

def createdirs(realiz):
# Create all the necessary directories                                                                           
path = "./doubDifferences_probandamp_realiz%d/"%realiz
os.mkdir(path,0755)
directory = os.path.split(path)[0]
return directory

在主程序中,我有如下代码:
for realiz in range(1,1000):
    for i in range(dim):
        for j in range(i+1,i+4):
            ...
            dirspaths = mod_savefile.createdirs(realiz)
3个回答

7

您可以使用try except语句:

try:
    os.mkdir(path,0755)
except OSError:
    pass 

“宁可犯错,也不要等到得到允许再去做!”

此外,这种方法比在执行mkdir之前测试目录更安全。实际上,在ispathmkdir之间的两个操作系统调用之间,很有可能该目录已被其他线程创建或删除。


我使用了 if not os.path.exists(path): os.makedirs(path) 但我不知道为什么这也能起作用,以及具体的区别是什么。 - user2820579
os.path.exists(path) 如果路径存在,无论是目录还是文件,都会返回 True - hivert

3

这应该可以满足您的需求。在尝试创建目录之前,请先测试它是否为一个目录。

if not os.path.isdir(path)
   os.mkdir(path,0755)

2
你有几种方法。可以使用 os.path.isdir 函数:
import os.path 

def createdirs(realiz):
    # Create all the necessary directories
    path = "./doubDifferences_probandamp_realiz%d/"%realiz
    if not os.path.isdir(path):  # if not exists
        os.mkdir(path,0755)      # create it
    directory = os.path.split(path)[0]
    return directory

或者处理异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接