Python 中如何删除文件或文件夹?
Python 删除文件用 os.remove() 或 Path.unlink();删除空目录用 os.rmdir();递归删除整个目录树用 shutil.rmtree()。本文对比各方法及注意事项。
删文件:os.remove(path)(或 Path(path).unlink());删空目录:os.rmdir(path);删非空目录及其全部内容:shutil.rmtree(path)。删除操作不可恢复,执行前务必确认路径。
删除文件
import os
os.remove("/path/to/file.txt")
# pathlib 风格
from pathlib import Path
Path("/path/to/file.txt").unlink()
文件不存在会抛 FileNotFoundError,可以 Path.unlink(missing_ok=True)(3.8+)忽略。
删除空目录
os.rmdir("/path/to/folder")
# 或
Path("/path/to/folder").rmdir()
目录非空会抛 OSError。
递归删除整个目录树
import shutil
shutil.rmtree("/path/to/folder")
会连子目录和文件一起删掉,不可撤销,使用前建议打印路径确认。
各方法对比
| 方法 | 目标 | 非空时行为 |
|---|---|---|
os.remove() / Path.unlink() |
文件、符号链接 | 不适用 |
os.rmdir() / Path.rmdir() |
空目录 | 抛 OSError |
shutil.rmtree() |
任意目录树 | 全部删除 |
常见问题(FAQ)
Q:删除前想判断路径是文件还是目录?
A:用 os.path.isfile() / os.path.isdir() 或 pathlib 的 is_file() / is_dir()。
Q:能删到回收站而不是彻底删除吗?
A:标准库不行,可以装第三方库 send2trash,它会把文件移到系统回收站,可恢复。
Q:删除时报 PermissionError?
A:通常是文件被其他进程占用(Windows 常见)或权限不足。先关闭占用文件的句柄,或检查运行权限。