递归删除文件夹

时间:2015-01-30 15:04:56

标签: python python-2.7 recursion

前段时间我写了这个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个子文件夹,Test也包含文件夹1-n。 它执行时没有错误,从逻辑上讲我没有看错。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当您致电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')