前段时间我写了这个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。 它执行时没有错误,从逻辑上讲我没有看错。
有什么想法吗?
答案 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')