rank vote url
17 776 241 907 url

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

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

  1. filename = "/my/directory/filename.txt"
  2. dir = os.path.dirname(filename)
  3. try:
  4. os.stat(dir)
  5. except:
  6. os.mkdir(dir)
  7. f = file(filename)

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

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

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


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

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

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

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

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

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

原文: https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/17/README.html