【Python】批量删除文件

上次操作

解决matplotlib文字标签遮挡问题

https://www.cnblogs.com/hightech/p/13175470.html

照着网上教程操作,风扇转的厉害,同时留下了不少垃圾文件,手动删除500张图片,真是体力活。

需求:删除000a.png 001.png 500.png

下面写下如何借助Python,实现快速批量删除文件。

1、抄网上代码

import os                                                 #导入模块
def delete_files():                                           #定义函数名称
    for foldName, subfolders, filenames in os.walk(path):     #用os.walk方法取得path路径下的文件夹路径,子文件夹名,所有文件名
           for filename in filenames:                         #遍历列表下的所有文件名
                if filename!= r'aaa.png':                       #当文件名不为“aaa.png”时
                    if filename.endswith('.png'):                #当文件名以.png后缀结尾时
                        os.remove(os.path.join(foldName, filename))    #删除符合条件的文件
                        print("{} deleted.".format(filename)) 

2、修改路径

# 运行程序前,记得修改主文件夹路径! 
path = os.getcwd() #获取当前工作目录路径  
delete_files()  

3、修改查找文件

# python使用正则表达式来获取文件名的前缀方法
import re
test='000.png'
m=re.findall(r'(.+?).',test)
print(m)

4、查找当前目录下的目标文件,

不要用递归--->os.listdir(path)
明确自己的需求,不要盲目抄代码。
下面是自己原创部分。
path = os.getcwd() #获取当前工作目录路径  
list_name=os.listdir(path)
for filename in list_name:
    if not re.findall(r'图d.png',filename):   # 需要保留的文件
        if re.findall(r'(d{3}.?).png',filename) :   # 需要删除的文件
            print(filename)

5、验证没有问题再加上删除操作【防止误删除】

filename是上步的结果,默认最后一个。

6、代码合并:

path = os.getcwd()
list_name=os.listdir(path)
n=0
del_filelst=[]
for filename in list_name:
    if not re.findall(r'图d.png',filename):   # 需要保留的文件
        if re.findall(r'(d{3}.?).png',filename) :   # 需要删除的文件
            del_filelst.append(filename)
            print("{} finded.".format(filename))
            os.remove(os.path.join(path, filename))    #删除符合条件的文件
            print("{} deleted.".format(filename)) 
            n+=1
            
            
print('共删除%s个文件'%n)  
print('删除文件为:
',del_filelst)

输出内容

 实际截图

 特别说明:因为自己代码问题导致的文件误删除,本人概不负责。

任何涉及删除操作,一定要在文件查找100%准确无误后执行,

  

原文地址:https://www.cnblogs.com/hightech/p/13176092.html