一尘不染

Python中的mkdir -p功能

python

有没有一种方法可以mkdir -p从Python内部获得类似于Shell上的功能。我正在寻找系统调用以外的解决方案。我确定代码少于20行,并且我想知道是否有人已经编写了它?


阅读 1347

收藏
2020-02-20

共1个答案

一尘不染

对于Python≥3.5,请使用pathlib.Path.mkdir

import pathlib
pathlib.Path("/tmp/path/to/desired/directory").mkdir(parents=True, exist_ok=True)

exist_ok参数是在Python 3.5中添加的。

对于Python≥3.2,os.makedirs具有可选的第三个参数exist_ok,当时True,启用mkdir -p功能,除非 mode提供了该参数,并且现有目录具有与预期目录不同的权限;在这种情况下,OSError如前所述:

import os
os.makedirs("/tmp/path/to/desired/directory", exist_ok=True)

对于更旧的Python版本,您可以使用os.makedirs并忽略该错误:

import errno    
import os

def mkdir_p(path):
    try:
        os.makedirs(path)
    except OSError as exc:  # Python ≥ 2.5
        if exc.errno == errno.EEXIST and os.path.isdir(path):
            pass
        else:
            raise
2020-02-20