如何创建目录及缺失的父目录
如何创建目录及缺失的父目录
技术背景
在Python编程中,经常会遇到需要创建目录的场景,尤其是需要创建包含缺失父目录的情况。不同版本的Python提供了不同的方法来实现这一功能,下面将详细介绍。
实现步骤
Python 3.5+
使用pathlib.Path.mkdir
方法,该方法可以递归创建目录,并且如果目录已存在不会抛出异常。
1 |
|
Python 3.2+
使用pathlib
如果可以,安装当前的pathlib
的向后兼容包pathlib2
。使用方法同Python 3.5+。
使用os
1 |
|
Python 2.7+
使用pathlib
安装pathlib2
,使用方法同Python 3.5+。
使用os
1 |
|
替代方法
使用distutils.dir_util.mkpath
,该方法可以创建嵌套目录,如果目录已存在则不做任何操作。但需要注意的是,distutils
模块已被弃用,计划在Python 3.12中移除。
1 |
|
核心代码
处理文件路径并创建目录
1 |
|
捕获OSError
并检查错误码
1 |
|
最佳实践
使用pathlib
模块
在Python 3.5及以上版本中,推荐使用pathlib
模块,它提供了更面向对象的路径操作方式,代码更简洁易读。
1 |
|
处理文件读写时创建目录
1 |
|
常见问题
竞态条件
在使用os.path.exists
和os.makedirs
时,可能会存在竞态条件。例如,在检查目录是否存在后,另一个进程可能会在创建目录之前将其删除。可以通过捕获OSError
并检查错误码来避免这种情况。
distutils
模块弃用
distutils.dir_util.mkpath
虽然可以在Python 2和3中使用,但由于distutils
模块已被弃用,不建议在新的项目中使用。
路径问题
在使用os.makedirs
和pathlib.Path.mkdir
时,要确保路径格式正确,避免出现路径不存在或路径为文件的情况。如果路径中的子目录与现有文件同名,可能会抛出NotADirectoryError
。
如何创建目录及缺失的父目录
https://119291.xyz/posts/2025-05-07.how-to-create-directory-and-missing-parent-directories/