【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('删除文件为:\n',del_filelst)
输出内容
实际截图
特别说明:因为自己代码问题导致的文件误删除,本人概不负责。
任何涉及删除操作,一定要在文件查找100%准确无误后执行,
-------------------------------
********厚德达理,励志勤工********
-------------------------------