递归删除文件夹

Recursively delete folders

我刚才写了这个 Python 脚本来递归删除所有以子字符串 "DEF.html".

结尾的文件夹和子文件夹

它位于调用它的第一个目录中,但任何递归调用都会失败。

知道为什么吗?我确定我以前有过 运行。

import os
def deleteFiles(path):
 files = os.listdir(path)
 for f in files:
  if not os.path.isdir(f) and "def.html" in f:
   os.remove(f)
  if os.path.isdir(f):
   deleteFiles(os.path.join(path, f))

deleteFiles(os.path.join('C:\', 'Users', 'ADMIN', 'Desktop', 'Folder', 'Test'))

文件夹结构为:

>Test
 >Folder1
   abc.html
   def.html
  >subfolder
   def.html #notDeleted
   abc1.html
 >Folder2
 ....

最多可以有 n 个子文件夹,测试也包含文件夹 1-n。 它执行没有错误,逻辑上我看不出任何错误。

有什么想法吗?

当您调用 os.path.isdir(f) 时,您正在检查当前工作目录中是否存在 f,而不是 path 目录。在你的条件语句中使用它之前,尝试在 f 上使用 os.path.join

import os
def deleteFiles(path):
 files = os.listdir(path)
 print files
 for f in files:
  f = os.path.join(path, f)
  if not os.path.isdir(f) and "def.html" in f:
   os.remove(f)
  if os.path.isdir(f):
   deleteFiles(f)

deleteFiles('Test')