makedirs可以在Python中递归地创建深层次的目录

商业

在一个不存在的目录中用os.mkdir()创建一个新目录时出现错误

os.mkdir()这是用于在Python中创建一个目录(文件夹)的方法。如果你试图在一个不存在的目录中创建一个新的目录,将会发生错误。(FileNotFoundError)

import os

os.mkdir('not_exist_dir/new_dir')
# FileNotFoundError

用os.madeirs()递归地创建目录。

如果你使用os.makedirs()而不是os.mkdir(),它将创建一个中间目录,所以你可以递归地创建一个深层的分层目录。

os.makedirs('not_exist_dir/new_dir')

在这个例子中,它将一次性创建所有这些目录。如果有多个新的中间目录是可以的。

  • 中间目录: not_exist_dir
  • 最终目录: new_dir

但是,如果终端目录已经存在,就会发生错误。(FileExistsError)

os.makedirs('exist_dir/exist_dir')
# FileExistsError

如果有一个参数exist_ok

从Python 3.2开始,增加了参数existence_ok,如果existence_ok=True,即使末端目录已经存在,也不会发生错误。如果结束目录不存在,将创建一个新的目录,如果它存在,将不做任何事情。这很方便,因为你不需要事先检查终端目录的存在。

os.makedirs('exist_dir/exist_dir', exist_ok=True)

如果缺少参数existence_ok

如果你有一个旧版本的Python,并且在os.madeirs中没有参数existence_ok,你可以使用os.path.existence来确定是否有一个结束目录,然后只在没有结束目录的情况下创建一个新目录。

if not os.path.exists('exist_dir/exist_dir'):
    os.makedirs('exist_dir/exist_dir')
Copied title and URL