在Python中删除大量文件

7 投票
2 回答
7946 浏览
提问于 2025-04-16 22:54

我想要删除一个文件夹里的所有文件。关于这个问题,在Python中删除文件夹内容的推荐答案提到,可以先获取所有文件的列表,然后在一个循环中对每个文件调用“unlink”来删除它们。

假设我在一个网络共享上有成千上万的文件,我希望尽可能缩短占用这个文件夹的时间。

那么,使用像 rm -f /path/* 这样的命令来一次性删除所有文件,还是使用 shutils.rmtree 之类的方法更有效呢?

2 个回答

-1

我试了这个解决方案,感觉效果不错:

while os.path.exists(file_to_delete):
  os.remove(file_to_delete)
10

如果你真的想删除整个目录及其所有内容,使用 shutils.rmtree 会比 os.remove(其实和 os.unlink 是一样的)更快。它还允许你指定一个回调函数来处理错误。

@nmichaels 在评论中的建议也不错,你可以先用 os.rename 重命名这个目录,然后在原来的位置创建一个新目录,再对原来的、重命名后的目录使用 shutils.rmtree

撰写回答