递归删除文件夹
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')
我刚才写了这个 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')