rank vote view answer url
8 3119 1993725 25 url

检查一个文件夹是否存在,如果不存在就创建它

有什么好的方法吗?这个是我想的:

filename = "/my/directory/filename.txt"
dir = os.path.dirname(filename)

try:
    os.stat(dir)
except:
    os.mkdir(dir)

f = file(filename)

我忘记了os.path.exists(多谢张三,李四,王五的提醒).下面是更改的:

def ensure_dir(f):
    d = os.path.dirname(f)
    if not os.path.exists(d):
        os.makedirs(d)

有什么"打开"的标记可以自动的运行?


我看了俩答案都很好,但是都有一点缺陷,所以给出我的:

先试os.path.exists,然后通过os.makedirs来创建.

if not os.path.exists(directory):
    os.makedirs(directory)

标注一下-如果一个文件在调用os.path.existsos.makedirs之间被创建了,将会出现一个OSError.遗憾的是捕获OSError异常继续进行并不是万无一失的,它将会忽略像磁盘空间不足,没有足够权限等一些其他造成文件创建失败的因素.

一个做法是捕获OSError异常并检查返回的错误代码(前提是知道错误代码对应的是什么).然而,还有另一种可能,第二次的os.path.exists.假如恰好在第一次检查的时候创建了文件夹,然后在第二次检查的时候删掉--我们被耍了~~

根据不同的应用,并行操作的危险或多或少的比其他因素危险.开发者必须在选择开发环境的时候更多地了解特定的应用程序.