Python创建文件夹:mkdir()与makedirs()
在文件管理中,创建文件夹是最基本的操作之一。Python 提供了 os
模块中的 mkdir()
和 makedirs()
方法,分别用于创建单级目录和多级目录。本节将详细讲解这两种方法的用法及其区别。
1. 创建文件夹的基本方法
在文件管理中,创建文件夹的操作可以分为以下两种场景:
- 单级文件夹:例如在当前目录下创建一个新文件夹。
- 多级文件夹:例如一次性创建多层嵌套的文件夹路径。
2. 使用 mkdir()
方法创建单级文件夹
mkdir()
是最常用的方法之一,用于创建单级目录。如果指定的目录已存在,或者路径中有不存在的上级目录,则会引发 FileExistsError
或 FileNotFoundError
异常。
import os
# 创建一个单级目录
try:
os.mkdir("my_folder") # 如果文件夹已存在,会抛出 FileExistsError
print("文件夹 'my_folder' 创建成功!")
except FileExistsError:
print("文件夹 'my_folder' 已经存在。")
except Exception as e:
print(f"发生错误:{e}")
代码解析:
os.mkdir("my_folder")
会在当前目录下创建名为my_folder
的文件夹。- 如果该文件夹已存在,则抛出
FileExistsError
,我们可以通过try-except
捕获并提示用户。 Exception
捕获其他可能的错误,例如路径格式错误。
3. 使用 makedirs()
方法创建多级文件夹
当需要一次性创建多层嵌套的目录时,mkdir()
就显得无能为力。这时可以使用 makedirs()
方法。makedirs()
会递归创建路径中所有缺失的父目录。
# 使用 makedirs() 创建多级文件夹
try:
os.makedirs("parent_folder/child_folder/sub_folder") # 如果父目录不存在,自动创建
print("多级文件夹 'parent_folder/child_folder/sub_folder' 创建成功!")
except FileExistsError:
print("目标路径已存在,无法重复创建。")
except Exception as e:
print(f"发生错误:{e}")
代码解析:
os.makedirs("parent_folder/child_folder/sub_folder")
一次性创建路径中的所有缺失目录。- 如果路径已存在,抛出
FileExistsError
,可以通过异常处理来提示用户。 - 相比
mkdir()
,makedirs()
的优势在于无需手动检查路径中是否有缺失的上级目录。
4. 两种方法的区别
方法 | 用途 | 是否支持多级路径 | 常见错误处理 |
---|---|---|---|
mkdir() | 创建单级目录 | 不支持 | FileExistsError , FileNotFoundError |
makedirs() | 创建多级嵌套目录 | 支持 | FileExistsError |
5. 注意事项
-
路径检查:创建文件夹之前,可以使用
os.path.exists()
检查目标路径是否已存在,避免抛出异常。path = "my_folder" if not os.path.exists(path): os.mkdir(path) print(f"文件夹 '{path}' 已创建。") else: print(f"文件夹 '{path}' 已存在。")
-
跨平台支持:在构建路径时,应使用
os.path.join()
方法来拼接路径,而非直接使用斜杠/
,以确保跨平台兼容性。path = os.path.join("parent_folder", "child_folder") os.makedirs(path, exist_ok=True) # 使用 exist_ok=True 避免抛出 FileExistsError print(f"多级文件夹 '{path}' 已创建(如果不存在)。")
-
错误处理:务必使用
try-except
捕获异常,尤其在涉及用户输入路径时,避免程序崩溃。
6. 实际应用场景
- 批量创建目录:需要为不同的项目自动生成存储数据的目录结构。
- 日志管理:为每天生成的日志文件创建日期命名的文件夹。
- 配置存储:为不同用户或环境生成独立的配置目录。
通过熟练掌握 mkdir()
和 makedirs()
的用法,可以灵活高效地管理文件夹结构,为项目的文件管理奠定良好的基础。