删除子目录中特定类型的文件(Python)

-1 投票
1 回答
623 浏览
提问于 2025-04-18 13:19

我有很多文件夹和子文件夹,几乎每个文件夹里都有我想删除的几种文件类型(.psd和.ttf)。我试着用os.walk模块写了个脚本,但比我想的要复杂得多。有没有其他方法可以用呢?谢谢!

import os  
def check_extension(fname,ext):  
    return fname.endswith(ext)  


for root_path,dirs,files in os.walk(os.getcwd()):  
    for fname in files:  
        if check_extension(fname,'psd'):  
            os.remove(fname)  

1 个回答

1

我很久以前写了这段代码,它应该能完成这个任务:

from os import listdir
from os.path import isfile, join

def get_extensions(folders, ext):
    '''Returns a list of all files that are stored in folders and their subdirectories with extension in ext'''
    found=[]
    while folders:
        temp=[]
        for folder in folders:
             try:
                 temp+=get_items(folder,None,False)
                 found+=get_items(folder,ext,True)
             except WindowsError:
                 pass
        folders=temp
    return found

def get_items(directory,ext,files=True):
    if files:
        return [join(directory,f) for f in listdir(directory) if (isfile(join(directory,f)) and f.split('.')[-1] in ext)]
    return [join(directory,f) for f in listdir(directory) if not isfile(join(directory,f))]

使用方法:

import os

for file in get_extensions([List of your folders], ['psd', 'ttf']):
    os.remove(file)

撰写回答