有没有办法从Python中获得类似于shell上的mkdir -p的功能?我正在寻找不同于系统调用的解决方案.我敢肯定代码不到20行,我想知道是不是有人已经写好了?

推荐答案

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

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

Python 3.5中添加了exist_ok参数.


对于Pythonos.makedirs3.2,当≥为True时,它具有optional third argument exist_ok,该optional third argument exist_ok启用mkdir -p功能-unlessmode被提供,并且现有目录具有与预期目录不同的权限;在这种情况下,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
        # possibly handle other errno cases here, otherwise finally:
        else:
            raise

Python相关问答推荐

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

Odoo 14 hr. emergency.public内的二进制字段

使用miniconda创建环境的问题

什么相当于pytorch中的numpy累积ufunc

所有列的滚动标准差,忽略NaN

如何启动下载并在不击中磁盘的情况下呈现响应?

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

Geopandas未返回正确的缓冲区(单位:米)

如何使用OpenGL使球体遵循Python中的八样路径?

python—telegraph—bot send_voice发送空文件

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

基于Scipy插值法的三次样条系数

Discord.py -

在Python中控制列表中的数据步长

Python Mercury离线安装

数据框,如果值在范围内,则获取范围和

解决Geopandas和Altair中的正图和投影问题

极点替换值大于组内另一个极点数据帧的最大值

Pandas:将值从一列移动到适当的列

Pythonquests.get(Url)返回Colab中的空内容