# 目录表
class TC_struct(Document):
name = StringField() #目录名
parent = ObjectIdField() #上层目录的 id
# 文件表
class TC_item(Document):
# 所在目录
parent = ReferenceField(TC_struct) #所在的目录
根据目录,递归查找目录中的所有文件。
#先找到所有的目录。path_id 为所选择目录的 id path_ls = recurs_path(TC_struct, path_id)
#然后找到目录下的所有文件 qry_list = Q(parent__in=path_ls)
#递归查找目录的方法。
def recurs_path(tb_cls, path_id):
rds = tb_cls.objects(parent=ObjectId(path_id)).only('id')
rt = list()
rt.append(ObjectId(path_id))
for rd in rds:
# 递归查找子目录中的子目录
rt.extend(recurs_path(tb_cls, rd._id))
return rt
现在的问题是,如果目录结构很深,如有 4000 多个目录,在递归的时候,耗时特别长。
有没有方法,可以提升递归时的效率。 根本的需求是:递归查找目录中的所有文件。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.