Python实现mkdir -p递归创建多级目录

mkdir为Linux操作系统中的创建目录命令,使用mkdir -p指令可以自动创建目标目录路径中尚不存在的上级目录(Windows操作系统也有同名的指令,用法稍有差别)。

Java的创建目录有mkdir和mkdirs两个方法,其中:

  • mkdir() :只能在已经存在的目录中创建创建文件夹。
  • mkdirs() :可以在不存在的目录中创建文件夹。

与Java类似,Python的os模块也存在两个函数,分别为mkdir和makedirs,其中:

  • mkdir( path [,mode] ):创建一个目录,可以是相对或者绝对路径,mode的默认模式是0777。如果目录有多级,则创建最后一级。如果最后一级目录的上级目录有不存在的,则会抛出一个OSError。
  • makedirs( path [,mode] ):创建递归的目录树,可以是相对或者绝对路径,mode的默认模式是0777。如果子目录创建失败或者已经存在,会抛出一个OSError的异常,Windows上Error 183即为目录已经存在的异常错误。如果path只有一级,与mkdir相同。

对于Python 2.X(X > 2.5)版本,使用Python模拟实现Linux下的mkdir -p指令功能的代码如下:

import os, errno

def mkdir_p(path):
    try:
        os.makedirs(path)
    except OSError as exc: # Python >2.5 (except OSError, exc: for Python <2.5)
        if exc.errno == errno.EEXIST and os.path.isdir(path):
            pass
        else: raise

而对于Python 3.X(X >= 2)版本,os.makedirs 函数还有第三个参数 exist_ok,该参数为真时执行mkdir -p,但如果给出了mode参数,目标目录已经存在并且与即将创建的目录权限不一致时,会抛出OSError异常。

本文链接:http://bookshadow.com/weblog/2014/10/02/python-mkdir-p/
请尊重作者的劳动成果,转载请注明出处!书影博客保留对文章的所有权利。

如果您喜欢这篇博文,欢迎您捐赠书影博客: ,查看支付宝二维码

Pingbacks已关闭。

暂无评论

张贴您的评论