当前位置: 首页 > 知识库问答 >
问题:

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

平俊茂
2023-03-14

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

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

这是三个文件:

001.7z
002.7z
003.7z

共有2个答案

步博涉
2023-03-14

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

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
郎睿
2023-03-14

Python使用glob获取文件和文件夹。

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)

使用FileFindFirstFile自动编辑。可以使用STD UDF,这可能是更少的代码。

$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)
 类似资料:
  • 有关删除数据的Firebase文档中说: 删除数据 删除数据的最简单方法是对数据位置的引用调用remove()。 还可以通过将null指定为另一个写入操作(如set()或update())的值来删除。您可以将此技术与update()结合使用,在单个API调用中删除多个子项。 有谁能解释一下,我认为最后一行可以帮助我删除firebase文件夹中的所有文件是什么意思?

  • 我想从名为"fajlovi"的文件夹中删除文件。多个和单个删除应该工作。但是它会删除文件夹中的第一个文件(文件夹中文件数组中的0位置)。如果我检查任何文件,它将删除前4个文件,而不是我检查的文件。下面是代码: 1.这是页面的截图: 2.然后我检查要删除的图像: 4.再次进入页面后,我们可以看到错误的图像被删除:

  • 问题内容: 我使用以下代码删除所有文件: 它将删除false 文件夹所在的位置。 我想删除文件夹及其所有子文件。 我该如何修改? 问题答案: 最简单的方法是使用Apache Commons IO库中的FileUtils.deleteDirectory。 请记住,这还将删除包含目录。 在gradle文件中添加此行以使用Apache

  • 问题内容: 如何在Python中删除文件或文件夹? 问题答案: 删除文件。 删除一个空目录。 删除目录及其所有内容。 模块中的对象还公开了这些实例方法: 删除文件或符号链接。 删除一个空目录。

  • 问题内容: 我一直在使用一段特定的代码从文件夹中删除文件,但是事实证明这是非常有问题的,因为也许我忘记了关闭一个或两个InputStream。我拥有的代码是如此之大,以至于我无法看到所有尚未关闭的Inputstreams。有没有打开InputStream的删除文件的方法? 这是我一直在使用的代码; 我已经编辑了代码。此版本有效。 问题答案: 提供的代码块中没有InputStream实例。 为了不编

  • 问题内容: 我在删除空目录时遇到问题。这是我的代码: 参数是我要传递需要完成工作的目录的位置。该目录如下所示: 请注意,以上所有文件夹均为空。当我运行该脚本的文件夹,单独被删除!但是,文件夹,并不会被删除,即使它们是空文件夹。 编辑: 我得到的例外是: 我在哪里弄错了? 问题答案: 尝试: