【问题标题】:How to delete a complete directory tree as quick as possible? Python如何尽快删除完整的目录树? Python
【发布时间】:2011-12-22 00:50:20
【问题描述】:

这就是我所做的,但需要永远:

>>> import shutil,os
>>> for d in os.listdir("."):
...     if os.path.isdir(d):
...         shutil.rmtree(d)

目录中包含数千个文件。

最快的方法是什么?

【问题讨论】:

  • 这是受操作系统限制的,而shutilrmtree是你可以去的最快的。调用 rmtree 的本机操作系统调用可能会更快。你用的是什么系统?我们可以为此调用 ctypes,然后您检查它是否更快。

标签: python filesystems directory


【解决方案1】:

不幸的是,这是 FS 速度限制。如果目录被很多文件填满,就没有真正的方法来加速它。

【讨论】:

  • 但是文件是如何存储在目录中的呢?它们都在连续的内存块中吗?我在想也许有一种方法可以将它们全部删除,就好像它们在一个大文件上一样。我可能只是缺乏一些关于文件系统的知识......
  • 好吧,如果我们谈论的是 unix 文件系统,每个文件都与一个 inode 相关联,删除一个文件实际上就是将它与底层 inode 断开链接。不幸的是,这个过程需要一些时间。不能保证 inode 分配是连续的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2012-01-31
  • 1970-01-01
相关资源
最近更新 更多