我正在用 Python 编写一个磁盘空间使用程序,我已经拥有了我想要的功能,但是速度很慢。我将要分析的文件系统可能有数百 GB,许多深度文件夹中有数千个文件。
我在前面链接的论文中使用基于“拆分”布局的 TreeMap 来显示数据。布局的创建和求解都是非常快速的操作。 http://www.nada.kth.se/utbildning/grukth/exjobb/rapportlistor/2005/rapporter05/engdahl_bjorn_05033.pdf
我正在使用 os.walk 走给定的路径,并将文件夹和文件及其大小添加到此 TreeMap 中。我得到每个文件的大小,并将其存储在字典缓存中(其中缓存 [filePath] = 大小),因此我可以轻松地再次检索它。所有这些都很快,除了 os.walk。单独运行 os.walk 可能需要 30 多秒,有时甚至几分钟。
我知道我不能让它更快地遍历结构,但我想以某种方式缓存结果,以便将来它更快。这是因为该应用程序允许导航树状图,您可以在其中单击任何部分(这是一个文件夹),它将使该部分成为树状图的“根”。
所以,我需要一个缓存解决方案,它允许轻松访问任何文件/文件夹,以及在层次结构中轻松导航,这样如果我从“根”节点开始,我可以跳到任何在任何深度指定子级,然后我可以从那里在结构中向上(或向下)移动。
我宁愿不将数据结构和导航合并到 TreeMap 中。如果解决方案在程序的行走和调整大小部分中,那将是最好的。最后,我真的只需要对文件/文件夹结构及其大小进行可步行的重建。
对于这种结构有什么好的库吗?或者自己写这个有多容易?我以前没有使用过这样的结构,所以我不知道创建它的最佳方法,以便我拥有我需要的访问类型。
最佳答案
关于用于缓存文件夹、文件和大小的 Python 高效结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782475/