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

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

本文详解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 相关产品和应用

全部下载

专题列表