在 Python 中判断文件夹是否存在,不存在时创建,可以使用以下两种常用方法:

方法一:使用 os 模块(兼容性更好)

import os

def ensure_directory_exists(directory_path):
    """
    确保文件夹存在(不存在时创建)
    :param directory_path: 文件夹路径
    """
    try:
        # 创建目录(exist_ok=True 表示目录已存在时不报错)
        os.makedirs(directory_path, exist_ok=True)
        print(f"目录已确保存在: {directory_path}")
    except OSError as error:
        print(f"创建目录失败: {error}")

# 使用示例
if __name__ == "__main__":
    folder_path = "./data/output"
    ensure_directory_exists(folder_path)

方法二:使用 pathlib 模块(更现代的对象导向风格)

from pathlib import Path

def ensure_directory_exists(directory_path):
    """
    确保文件夹存在(不存在时创建)
    :param directory_path: 文件夹路径
    """
    path = Path(directory_path)
    try:
        # 创建目录(parents=True 表示创建父目录,exist_ok=True 表示目录已存在时不报错)
        path.mkdir(parents=True, exist_ok=True)
        print(f"目录已确保存在: {directory_path}")
    except OSError as error:
        print(f"创建目录失败: {error}")

# 使用示例
if __name__ == "__main__":
    folder_path = "./data/output"
    ensure_directory_exists(folder_path)

关键点说明:

  1. 自动创建父目录:

    • os.makedirs 和 Path.mkdir(parents=True) 都会自动创建路径中所有不存在的父目录
  2. 安全处理已存在目录:

    • exist_ok=True 参数确保当目录已存在时不会引发 FileExistsError
  3. 异常处理:

    • 捕获 OSError 可处理权限不足、无效路径等常见问题
  4. 路径格式:

    • 支持绝对路径(/home/user/dir)和相对路径(./dir)
    • 自动处理末尾的路径分隔符(/ 或 \)

实际应用场景:

  • 保存文件前确保输出目录存在
  • 初始化项目目录结构
  • 创建临时工作目录
  • 准备日志文件存储目录

扩展功能:

如果需要创建用户目录(如文档、图片目录),可以使用:

from pathlib import Path

# 创建用户主目录下的特定文件夹
special_folder = Path.home() / "Documents" / "MyProject"
special_folder.mkdir(parents=True, exist_ok=True)

这两种方法都经过了广泛的验证,推荐使用 pathlib 版本(Python 3.4+),它提供了更直观的面向对象接口。对于需要兼容 Python 2.7 的项目,则使用 os 模块的版本。

更多推荐