使用python 2.7删除共享相同名称的文件夹和子文件夹 - 错误

时间:2016-06-01 09:40:43

标签: python-2.7 directory subdirectory

我尝试删除共享同一文件夹名称的重复文件夹。

所有文件夹分布在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。在每个子文件夹中都是文件 - 它与文件的名称无关,以及这些文件是否也在其他文件夹中重复。我不关心文件夹内容。我只需要检查重复的名称文件夹 - 如果有 - 代码将删除重复的文件夹。 我尝试编写这段代码:

import os,sys,fnmatch,shutil

path = r"G:\desktop\Project\lyr\ab"
groups_list = []
for root, dirs, files in os.walk(path):
    for name in dirs:
        groups_list.append(name)
        print name, 'appears', groups_list.count(name), 'times'
        if groups_list.count(name) >= 2: # if there are 2 or more duplictes
            print name
            shutil.rmtree(path) 

我收到错误:

WindowsError: [Error 5] : 'G:\\desktop\\Project\\lyr\\ab\\6105\\5001184\\5001184.jpg'
  
    
      

    
  

文件夹和子文件夹的顺序是:

concatenate

在文件夹6105和6195中,该文件夹具有相同的名称:5001225。我要删除的文件夹。

对于这个例子,我展示了一些例子。实际上,目录ab是几个重复的子文件夹。

我红enter image description here并没有回答我的问题,因为我需要删除整个重复的文件夹,而且,我不在乎文件夹和子文件夹中文件的大小\名称。

1 个答案:

答案 0 :(得分:0)

这段代码最终对我有用:

import os,sys,fnmatch,shutil

root = r"G:\desktop\Project\lyr\ab"
groups_list = []
for dirname, dirnames, filenames in os.walk(root):
    for subdirname in dirnames:
        groups_list.append(subdirname)
        if groups_list.count(subdirname) >= 2: # if there are 2 or more duplictes
            dir_to_delete = os.path.join(dirname, subdirname)
            print subdirname, 'appears', groups_list.count(subdirname), 'times'
            print dir_to_delete
            shutil.rmtree(dir_to_delete)