一、创建目录
os.mkdir 和 os.makedirs 都是用于创建目录的 Python 标准库函数,但它们在功能和行为上有重要区别。
主要区别
1.
os.mkdir()
- 只能创建单级目录
- 父目录必须已经存在
os.makedirs()
- 可以创建多级嵌套目录
- 会自动创建所有不存在的父目录
2.
os.makedirs() 特有参数
exist_ok:False(默认): 如果目录已存在则抛出FileExistsErrorTrue: 如果目录已存在则不抛出异常
二、删除目录
Python 的 os 模块提供了多个用于删除文件和目录的函数,包括 rmdir(), remove()/unlink(), 和 removedirs()。以下是它们的主要区别:
1. os.rmdir(path)
-
功能:删除一个空目录
-
特点:
-
只能删除空目录(目录中不能有任何文件或子目录)
-
如果目录不为空,会引发
OSError
-
-
示例:
import os os.rmdir('empty_directory') # 删除名为 empty_directory 的空目录
2. os.remove(path) 或 os.unlink(path)
-
功能:删除一个文件
-
特点:
-
remove()和unlink()功能完全相同(unlink是 Unix 系统调用名称) -
只能删除文件,不能删除目录
-
如果要删除的文件不存在,会引发
FileNotFoundError
-
-
示例:
import os os.remove('file.txt') # 删除文件 file.txt os.unlink('file.txt') # 同上
3. os.removedirs(name)
-
功能:递归删除空目录
-
特点:
-
从指定目录开始,尝试删除所有父目录(如果它们为空)
-
如果任何一级目录不为空,则停止删除并保留该目录及以上目录
-
行为类似于多次调用
os.rmdir()
-
-
示例:
import os os.removedirs('dir1/dir2/dir3') # 如果所有目录都为空,则删除 dir3, dir2, dir1
比较总结
| 函数 | 删除对象 | 能否递归 | 是否要求目录为空 | 备注 |
|---|---|---|---|---|
os.rmdir() |
目录 | 否 | 是 | 只能删除空目录 |
os.remove()/os.unlink() |
文件 | 不适用 | 不适用 | 不能用于目录 |
os.removedirs() |
目录 | 是 | 是 | 递归删除空目录链 |
注意事项
-
这些函数都是永久性删除,不会将文件/目录移动到回收站
-
对于非空目录的删除,可以使用
shutil.rmtree() -
删除操作前最好先检查文件/目录是否存在,或使用 try-except 处理异常
-
在 Windows 上,删除正在使用的文件可能会失败
-
# 删除非空目录
import shutil
shutil.rmtree('non_empty_directory') # 这会递归删除目录及其所有内容