Python os.mkdir()与os.makedirs()的使用区别

林舟
林舟
发布时间:2026-10-15| 4人浏览过
原创

本文详解Python中os.mkdir()与os.makedirs()的区别。os.mkdir仅支持创建单级目录,若父目录不存在则报错,适合确保路径安全的场景;os.makedirs可递归创建多级目录,即使中间层级缺失也能自动创建。文章通过代码示例对比两者行为,并探讨在Hadoop文件同步等实际业务中如何根据需求选择合适方法,避免路径错误导致的异常。

os.mkdir(path)与os.makedirs(path)

今日工作中涉及将Hadoop文件同步至服务器磁盘的操作。由于文件类别目录结构复杂,在迁移文件时需要先判断目标目录是否存在。

在此场景下,主要涉及两个Python方法:os.mkdir(path)和os.makedirs(path)。

os.mkdir(path)

该方法的功能是逐级创建目录,但其前提是父级目录必须已存在。如果父级目录不存在,执行时会抛出异常,处理起来相对繁琐。然而,这种机制并非没有道理。当目录是根据文件名动态创建时,虽然操作稍显繁琐,但它提供了更高的安全性,防止因手误错误地创建了双层或多层不正确的路径。


import os 
os.mkdir('d:\hello')  # 正常
os.mkdir('d:\hello\hi') # 正常
 
# 如果d:\hello目录不存在
# 则os.mkdir('d:\hello\hi')执行失败

os.makedirs(path)

从命名即可推测其差异:它可以一次性创建多级目录,即使中间层级的目录不存在,它也会自动替你创建。这看似方便,但潜在风险也不小,例如若中间目录名称拼写错误,它仍会按错误路径创建,可能导致意想不到的结果。


import os 
os.makedirs('d:\hello')  # 正常
os.makedirs('d:\hello\hi') # 正常
 
# 如果d:\hello目录不存在
# 则os.makedirs('d:\hello\hi') # 仍然正常

两者各有优缺点,应根据具体业务需求选择使用。

补充:Python中os.path与os.makedirs的运用(判断文件或文件夹是否存在及创建文件夹)


import os
import numpy as np
data = np.array([1, 2, 3])
if not os.path.exists("./data/"):
  print("# path not exists")
  os.makedirs("./data/")
  if not os.path.exists("./data/data.npy"):
    print("# data.npy not exists")
    np.save("./data/data.npy", data)
 
print("# path exists? :", os.path.exists("./data/"))
print("# data.npy exists? :", os.path.exists("./data/data.npy"))

运行结果:


# path not exists
# data.npy not exists
# path exists? : True
# data.npy exists? : True

以上为个人经验分享,希望能为大家提供参考。欢迎大家多多支持本站。如有错误或未考虑周全之处,敬请指正。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。