在系统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磁盘是最后一个被处理的磁盘,它是该磁盘上的最后一个标记(我不会声称原因)挂起的文件。