删除多个文件夹中的相同文件(python)

时间:2018-03-25 07:38:29

标签: python delete-file

我有100个不同名称的文件夹,每个文件夹中应包含相同的三个文件,但在某些文件夹中,这三个文件都不存在。

如何删除那些空的或只包含一个或两个文件的文件夹?

这是三个文件:

001.7z
002.7z
003.7z

2 个答案:

答案 0 :(得分:2)

使用import glob, os, shutil # Get all folders in current directory. folders = [item for item in glob.iglob('*') if os.path.isdir(item)] # Loop though the folders. for folder in folders: # Check amount of .7z files and if less than 3, remove folder tree. if len(glob.glob(folder + r'\*.7z')) < 3: shutil.rmtree(folder) 获取文件和文件夹的Python。

FileFindFirstFile

使用$hFind1 = FileFindFirstFile('*') If $hFind1 = -1 Then Exit 1 While 1 ; Get next folder. $sFound1 = FileFindNextFile($hFind1) If @error Then ExitLoop ; Skip files. If Not @extended Then ContinueLoop ; Find 7z files. $hFind2 = FileFindFirstFile($sFound1 & '\*.7z') ; If no handle, delete folder. If $hFind2 = -1 Then DirRemove($sFound1) ContinueLoop EndIf ; Count for 7z files. $iCount = 0 ; Get count of 7z files. While 1 $sFound2 = FileFindNextFile($hFind2) If @error Then ExitLoop $iCount += 1 WEnd FileClose($hFind2) ; Remove folder if count less than 3. If $iCount < 3 Then DirRemove($sFound1, 1); 1 = recurse EndIf WEnd FileClose($hFind1) 自动运行。可以使用可能代码较少的STD UDF。

{{1}}

答案 1 :(得分:0)

首先获取文件夹中所有目录的列表:

import shutil
import os

dirs = filter(os.path.isdir, os.listdir(os.curdir))

在所有文件夹上运行查找特定文件与提到的文件名匹配(完成此部分..):

for dir in dirs:
      files = filter(os.path.isfile, os.listdir(str(os.curdir) + dir))
      for file in files: 
           if file=="01.7z": ##Continue here
               shutil.rmtree(str(os.curdir) + dir)
               break