非常大的目录遍历在OS X 10.9上挂起而没有错误

时间:2015-06-05 21:41:06

标签: python

在系统Python(即2.7.1)中编写一个小应用程序来控制我的文件系统。现在它只是遍历我系统的所有卷和目录,然后应该创建一个文本文件,其中包含有关我稍后将使用的每个文件的某些格式化数据。

以下函数不会抛出错误(好吧,不是在我让它挂起的~10分钟内),而是始终停在同一个文件中。

当日志文件达到约12.8MB时,它就会停止。甚至不知道从哪里开始!想法?

   # this function gets used in the function below
    def is_subpath(path, of_paths):
            if isinstance(of_paths, basestring): of_paths = [of_paths]
            abs_of_paths = [os.path.abspath(of_path) for of_path in of_paths]
            return any(os.path.abspath(path).startswith(subpath) for subpath in abs_of_paths)

    # this is the method that hangs; it's part of an essentially empty class at the moment
    def build_master_file_list(self, path):
            self.log.write("***Building master file list...\n")
            last_flush = 1
            for root, directories, files in os.walk(path):
                files = [f for f in files if not f[0] == '.']
                for filename in files:
                    if self.files > last_flush * 1000:
                        self.log.close()
                        self.mfl.close()
                        self.log = open(self.log_path, "a")
                        self.mfl = open(self.mfl_path, "a")
                        time.sleep(0.1)
                        last_flush += 1
                    filepath = os.path.join(root, filename)
                    if not is_subpath(filepath, self.no_crawl_list):
                        self.files += 1
                        self.mfl.write(filepath + "\n")
                        self.log.write("Added '{0}' to master_file_list. \n".format(filename))
            self.mfl.close()  # self.mfl is just a text file, ie. "master file list"

更新:实际上它似乎挂在最后一个文件上。我修改了这个函数以反映下面的一些注释,上面的代码现在反映了这一点。

有4个卷正在走路。其中一个是3TB,一个是400GB SSD,另一个是150GB。 150GB磁盘是最后一个被处理的磁盘,它是该磁盘上的最后一个标记(我不会声称原因)挂起的文件。

0 个答案:

没有答案