Python os.mkdir()与os.makedirs()的使用区别
本文详解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
以上为个人经验分享,希望能为大家提供参考。欢迎大家多多支持本站。如有错误或未考虑周全之处,敬请指正。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













