Python 中如何删除文件或文件夹?

Python 删除文件用 os.remove() 或 Path.unlink();删除空目录用 os.rmdir();递归删除整个目录树用 shutil.rmtree()。本文对比各方法及注意事项。

最佳实践
Python 中如何删除文件或文件夹?封面

删文件: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:这些检查默认跟随符号链接,且检查与删除之间可能发生变化;应明确链接处理策略并捕获实际删除异常。删除链接本身用 unlink,不应把顶层链接交给 rmtree。

Q:能删到回收站而不是彻底删除吗?
A:标准库不行,可以装第三方库 send2trash,在平台支持且操作成功时把文件移到回收站;仍可能失败,恢复取决于回收站保留状态,不能保证永久可恢复。

Q:删除时报 PermissionError?
A:通常是文件被其他进程占用(Windows 常见)或权限不足。先关闭占用文件的句柄,或检查运行权限。

[1]: 观测云文档《DataKit 文档》https://docs.guance.com/datakit/

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台