1、目的
为了解决服务器获取图片进行检测中,日流量过大,图片存储过多,服务器内存不足的问题,需要删除服务器中过大的图片文件,并保留部分缩略图数据,便于浏览。为了加快多个文件的删除速度,使用多线程并行清理文件夹。
2、代码
import os
import threading
import time
def del_doc_file(p_doc):
file_name = []
sizes = []
size = 0.0
try:
for file in os.listdir(p_doc):
if not os.path.isdir(file):
size += os.path.getsize(os.path.join(p_doc, file))
file_name.append(file)
sizes.append(size)
print(p_doc + "开始内存:" + str(sizes[-1] / 1024 / 1024 / 1024) + "GB")
for i, item in enumerate(sizes):
if item / 1024 / 1024 / 1024 > 10.0:
for j,jtem in enumerate(file_name[-1:i:-1]):
path = p_doc + "/" + str(jtem)
if os.path.getsize(path) > 0.5 * 1024 * 1024:
os.remove(path)
num = file_name.index(str(jtem))
del sizes[num]
del file_name[num]
break
size = 0.0
for file in os.listdir(p_doc):
if not os.path.isdir(file):
size += os.path.getsize(os.path.join(p_doc, file))
sizes.append(size)
print(p_doc + "结束内存:" + str(sizes[-1] / 1024 / 1024 / 1024) + "GB")
except Exception as e:
print (e)
if __name__ == '__main__':
while True:
input_del= threading.Thread(target=del_doc_file, args=('文件夹名称',))
output_del = threading.Thread(target=del_doc_file, args=('.文件夹名称',))
input_del.start()
output_del.start()