在 Python 中创建文件夹(目录)非常简单,主要使用 os 模块或 pathlib 模块,下面我将为你详细介绍几种常用且推荐的方法。

使用 os 模块 (经典方法)
os 模块提供了与操作系统交互的功能,os.makedirs() 函数是创建文件夹的标准方法。
创建单个文件夹
使用 os.mkdir() 函数,如果文件夹的父目录不存在,它会抛出 FileNotFoundError 错误。
import os
folder_name = "my_python_folder"
# 检查文件夹是否已存在,如果不存在则创建
if not os.path.exists(folder_name):
try:
os.mkdir(folder_name)
print(f"文件夹 '{folder_name}' 创建成功!")
except OSError as e:
print(f"创建文件夹时出错: {e}")
else:
print(f"文件夹 '{folder_name}' 已存在。")
创建多级嵌套文件夹 (最常用)
使用 os.makedirs() 函数,这个函数非常强大,它可以一次性创建所有不存在的父目录,就像 Linux/Unix 中的 mkdir -p 命令一样。
import os
# 要创建的嵌套文件夹路径
# 在 Windows 上是 "project/src/utils"
# 在 macOS/Linux 上是 "project/src/utils"
# 使用 os.path.join 可以自动处理不同操作系统的路径分隔符
folder_path = os.path.join("project", "src", "utils")
# 创建文件夹
# exist_ok=True 的意思是,如果文件夹已经存在,不会报错
os.makedirs(folder_path, exist_ok=True)
print(f"文件夹 '{folder_path}' 创建成功!")
os.makedirs() 的关键参数:

exist_ok(默认为False):如果设置为True,当目标文件夹已存在时,函数不会抛出FileExistsError异常,而是静默跳过,这通常是你想要的行为,因为它可以防止脚本在多次运行时出错。
使用 pathlib 模块 (现代、面向对象的方法)
从 Python 3.4 开始,pathlib 模块被引入,它提供了一种更现代、更直观、面向对象的方式来处理文件系统路径。这是目前官方推荐的方式。
创建单个文件夹
使用 Path.mkdir() 方法。
from pathlib import Path
folder_name = "my_python_folder_pathlib"
# 创建一个 Path 对象
p = Path(folder_name)
# 检查文件夹是否存在,如果不存在则创建
if not p.exists():
try:
p.mkdir()
print(f"文件夹 '{p}' 创建成功!")
except OSError as e:
print(f"创建文件夹时出错: {e}")
else:
print(f"文件夹 '{p}' 已存在。")
创建多级嵌套文件夹
Path.mkdir() 同样可以创建多级目录,但需要设置 parents=True 参数。
from pathlib import Path
# 要创建的嵌套文件夹路径
# Path 对象会自动处理路径分隔符,无论在什么操作系统上
folder_path = Path("project/src/utils")
# 创建文件夹
# parents=True: 创建所有必需的父目录
# exist_ok=True: 如果目录已存在,不报错
folder_path.mkdir(parents=True, exist_ok=True)
print(f"文件夹 '{folder_path}' 创建成功!")
Path.mkdir() 的关键参数:

parents(默认为False):如果设置为True,允许创建所有不存在的父目录。exist_ok(默认为False):如果设置为True,当目标文件夹已存在时,不会抛出FileExistsError异常。
总结与对比
| 特性 | os 模块 |
pathlib 模块 |
|---|---|---|
| 方法 | os.makedirs(path, exist_ok=True) |
Path(path).mkdir(parents=True, exist_ok=True) |
| 风格 | 过程式,函数式 | 面向对象 |
| 路径处理 | 需要手动使用 os.path.join 来拼接路径,以保证跨平台兼容性。 |
Path 对象直接使用 运算符拼接,非常直观且跨平台。 |
| 可读性 | 代码相对传统。 | 代码更清晰,更符合 Pythonic 风格。 |
| 推荐度 | 仍然可用,尤其是在旧版 Python 中。 | 强烈推荐,是 Python 3.4+ 处理文件路径的现代标准。 |
最佳实践
在编写新代码时,优先使用 pathlib,它更安全、更易读,并且是 Python 语言发展的方向。
使用 pathlib 的完整示例:
from pathlib import Path
import os # 可以用来获取当前工作目录等
# 定义你想创建的文件夹的相对路径
# 你可以把它放在任何你想要的地方,比如当前目录下的 "data/raw"
# 使用 / 来拼接路径,非常方便!
new_folder_path = Path("data/raw/processed_data")
# 使用 with 语句块(虽然这里不是必须的,但是一种好习惯)
# 创建文件夹
try:
# parents=True 确保父目录 "data" 和 "data/raw" 也会被创建
# exist_ok=True 防止文件夹已存在时出错
new_folder_path.mkdir(parents=True, exist_ok=True)
print(f"成功在以下路径创建文件夹: {os.path.abspath(new_folder_path)}")
except Exception as e:
print(f"创建文件夹失败: {e}")
运行这段代码后,你的项目目录下就会出现一个 data/raw/processed_data 的文件夹结构。
