清理文件夹列表,仅保留每个文件夹组中的顶级文件夹

清理文件夹列表,仅保留每个文件夹组中的顶级文件夹,第1张

概述我刚刚开始编写Python编程,希望一些经验丰富的人可以给我有关如何优化以下代码的提示.我想要做的是浏览文件夹列表,使新列表仅包含每组文件夹中的顶级文件夹.我一直在努力并编写下面的代码来完成工作,但是当使用包含数千个文件夹的列表时,伸缩性会非常差.欢迎任何喜欢如何优化此例程的想法.folderlist = [ 'c:\\temp\\data\\1122 A

我刚刚开始编写Python编程,希望一些经验丰富的人可以给我
有关如何优化以下代码的提示.

我想要做的是浏览文件夹列表,使新列表仅包含每组文件夹中的顶级文件夹.

我一直在努力并编写下面的代码来完成工作,但是当使用包含数千个文件夹的列表时,伸缩性会非常差.

欢迎任何喜欢如何优化此例程的想法.

folderList = [  "c:\temp\data\1122 AA",\                "c:\temp\data\1122 AA\div",\                "c:\temp\data\1122 AA\div\Etc",\                "c:\temp\data\1122 AA\div\Etc2",\                "c:\temp\server1\div\2244_BB",\                "c:\temp\server1\div\2244_BB\pp",\                "c:\temp\server1\div\2244_BB\der\dedd",\                "c:\temp\server1\div\2244_BB\defwe23d\23ded",\                "c:\temp\123456789-BB",\                "c:\temp\123456789-BB\pp",\                "c:\temp\123456789-BB\der\dee32d",\                "c:\temp\data\123456789-BB\ded\ve_23"]l2 = folderList.copy()ind = []indexes_to_be_deleted = []for el in l2:    for IDx,x in enumerate(l2):        if el in x:            ind.append(IDx)counts = Counter(ind)for l,count in counts.most_common():    if count > 1:        indexes_to_be_deleted.append(l)    for i in sorted(indexes_to_be_deleted,reverse=True):     del folderList[i]Output:c:\temp\data\1122 AA\c:\temp\server1\div\2244_BB\c:\temp\123456789-BB\

输出是预期的,只有每组文件夹中的顶级文件夹.但是,我希望你们中的一些人有一个如何使例程更快的想法.最佳答案我建议添加到新列表,而不是删除项目:

topFolders = [] for name in folderList:  # sorted(folderList) if they are not already in order    if topFolders and name.startswith(topFolders[-1]+"\"): continue    topFolders.append(name)

您可以根据需要将其分配给原始列表

folderList = topFolders
总结

以上是内存溢出为你收集整理的清理文件夹列表,仅保留每个文件夹组中的顶级文件夹 全部内容,希望文章能够帮你解决清理文件夹列表,仅保留每个文件夹组中的顶级文件夹 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1199527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存