• python 遍历删除日志


    #! /usr/bin/python2.6
    #-*- encoding:UTF-8 -*-

    import os
    import os.path
    import time

    root_dir = os.getcwd()
    seperator = os.sep

    max_used_space = 60*1024*1024*1024 #当使用的硬盘空间大于该值的时候启动删除60G
    min_left_space = 20*1024*1024*1024 #删除保存的硬盘空间20G
    max_remain_time = 7*24*60*60 #文件最大允许保存的时间为一周时间

    file_list = []

    def show_dirinfo(root_dir):
    for parent, dirnames, filenames in os.walk(root_dir):
    if len(filenames) > 0: #当前访问的文件夹下有文件存在
    show_fileinfo(parent, filenames)

    if len(dirnames) > 0: #当前访问的文件夹下还有子文件夹,递归访问
    for dirname in dirnames:
    if parent.endswith(seperator):
    show_dirinfo(parent + dirname)
    else:
    show_dirinfo(parent + seperator + dirname)
    del dirnames[0] #该文件夹已经访问过了,需要删除

    if (len(filenames) == 0) and (len(dirnames) == 0): #空文件夹就删除
    try:
    os.rmdir(parent) ###############删除空文件夹#################
    except Exception as e:
    pass

    def show_fileinfo(parent_dir, filenames):

    for filename in filenames: #输出文件信息
    full_path_name = os.path.join(parent_dir, filename)
    try:
    statinfo=os.stat(full_path_name)
    except Exception as e:
    return

    file_size = statinfo.st_size
    file_midifytime = statinfo.st_mtime

    temp_dict = dict(zip(['filename', 'filesize', 'filetime'], [full_path_name, file_size, file_midifytime]))
    #if file_size > 512*1024*1024:
    save_file(temp_dict)

    def save_file(temp_dict):
    global file_list

    insert_succ = 0 #判断是否插入成功

    new_time = temp_dict['filetime']

    if len(file_list) == 0:
    file_list.append(temp_dict)
    else:
    for i in range(len(file_list)):
    old_time = file_list[i]['filetime']
    if new_time < old_time: #时间越久数值越小,按照时间排序,时间值越小也就是越久的文件排在最前面,删除的时候优先删除
    file_list.insert(i, temp_dict)
    insert_succ = 1
    break

    if insert_succ == 0: #没有插入成功表示当前的文件是新文件,需要放在最后面
    file_list.append(temp_dict)

    def delete_file():
    global file_list
    global max_used_space
    global min_left_space
    global max_remain_time

    file_count = len(file_list)
    file_index = 0

    now_time = time.time()

    while (file_index < (file_count - 1)):
    file_midifytime = file_list[file_index]['filetime']
    full_path_name = file_list[file_index]['filename']

    if (now_time - file_midifytime) >= max_remain_time: #该文件的时间已经超过一周了,需要删除
    try:
    os.remove(full_path_name) #####################删除文件了#########################
    del file_list[file_index]

    file_count = file_count - 1
    file_index = file_index - 1
    except Exception as e:
    return

    file_index = file_index + 1
    else:
    break

    total_file_size = get_total_file_size() #获得总的文件大小信息

    if total_file_size > max_used_space: #如果大于上限就开始执行删除操作
    while (total_file_size > min_left_space): #删除保留空间大小
    delete_file_name = file_list[0]['filename'] #从头开始删除,因为已经排序了
    delete_file_size = file_list[0]['filesize']
    os.remove(delete_file_name) #执行删除操作
    del file_list[0] #从文件列表中删除
    total_file_size = total_file_size - delete_file_size #重新计算总的文件大小

    def get_total_file_size(): #计算整个文件的大小
    global file_list

    total_size = 0.0
    for i in range(len(file_list)):
    total_size = total_size + file_list[i]['filesize']

    try:
    show_dirinfo(root_dir)
    print(str(file_list))
    #delete_file()
    except Exception as e:
    print(e)

      1 #! /usr/bin/python2.6
      2 #-*- encoding:UTF-8 -*-
      3 
      4 import os
      5 import os.path
      6 import time
      7 
      8 root_dir = os.getcwd()
      9 seperator = os.sep
     10 
     11 max_used_space = 60*1024*1024*1024    #当使用的硬盘空间大于该值的时候启动删除60G
     12 min_left_space = 20*1024*1024*1024    #删除保存的硬盘空间20G
     13 max_remain_time = 7*24*60*60    #文件最大允许保存的时间为一周时间
     14 
     15 file_list = []
     16 
     17 def show_dirinfo(root_dir):
     18     for parent, dirnames, filenames in os.walk(root_dir):
     19         if len(filenames) > 0:    #当前访问的文件夹下有文件存在
     20             show_fileinfo(parent, filenames)
     21         
     22         if len(dirnames) > 0:    #当前访问的文件夹下还有子文件夹,递归访问
     23             for dirname in dirnames:
     24                 if parent.endswith(seperator):
     25                     show_dirinfo(parent + dirname)
     26                 else:
     27                     show_dirinfo(parent + seperator + dirname)
     28             
     29                del dirnames[0]    #该文件夹已经访问过了,需要删除
     30         
     31         if (len(filenames) == 0) and (len(dirnames) == 0): #空文件夹就删除
     32             try:
     33                 os.rmdir(parent)    ###############删除空文件夹#################
     34             except Exception as e:
     35                 pass
     36 
     37 def show_fileinfo(parent_dir, filenames):
     38     for filename in filenames: #输出文件信息
     39         full_path_name = os.path.join(parent_dir, filename)
     40         
     41         try:
     42             statinfo=os.stat(full_path_name)
     43         except Exception as e:
     44             return
     45         
     46         file_size = statinfo.st_size
     47         file_midifytime = statinfo.st_mtime
     48         
     49         temp_dict = dict(zip(['filename', 'filesize', 'filetime'], [full_path_name, file_size, file_midifytime]))
     50         #if file_size > 512*1024*1024:
     51         save_file(temp_dict)
     52 
     53 def save_file(temp_dict):
     54     global file_list
     55     
     56     insert_succ = 0    #判断是否插入成功
     57     
     58     new_time = temp_dict['filetime']
     59     
     60     if len(file_list) == 0:
     61         file_list.append(temp_dict)
     62     else:
     63         for i in range(len(file_list)):
     64             old_time = file_list[i]['filetime']
     65             if new_time < old_time:    #时间越久数值越小,按照时间排序,时间值越小也就是越久的文件排在最前面,删除的时候优先删除
     66                 file_list.insert(i, temp_dict)
     67                 insert_succ = 1
     68                 break
     69     
     70             if insert_succ == 0:    #没有插入成功表示当前的文件是新文件,需要放在最后面
     71                 file_list.append(temp_dict)
     72 
     73 def delete_file():
     74     global file_list
     75     global max_used_space
     76     global min_left_space
     77     global max_remain_time
     78     
     79     file_count = len(file_list)
     80     file_index = 0
     81     
     82     now_time = time.time()
     83     
     84     while (file_index < (file_count - 1)):
     85         file_midifytime = file_list[file_index]['filetime']
     86         full_path_name = file_list[file_index]['filename']
     87         
     88         if (now_time - file_midifytime) >= max_remain_time:    #该文件的时间已经超过一周了,需要删除
     89             try:
     90                 os.remove(full_path_name)    #####################删除文件了#########################
     91                 del file_list[file_index]
     92                 
     93                 file_count = file_count - 1
     94                 file_index = file_index - 1
     95             except Exception as e:
     96                 return
     97             
     98             file_index = file_index + 1
     99         else:
    100             break
    101     
    102     total_file_size = get_total_file_size()    #获得总的文件大小信息
    103     
    104     if total_file_size > max_used_space:    #如果大于上限就开始执行删除操作
    105         while (total_file_size > min_left_space):    #删除保留空间大小
    106             delete_file_name = file_list[0]['filename']    #从头开始删除,因为已经排序了
    107             delete_file_size = file_list[0]['filesize']
    108             os.remove(delete_file_name)    #执行删除操作
    109             del file_list[0]    #从文件列表中删除
    110             total_file_size = total_file_size - delete_file_size    #重新计算总的文件大小
    111 
    112 def get_total_file_size():    #计算整个文件的大小
    113     global file_list
    114     
    115     total_size = 0.0
    116     for i in range(len(file_list)):
    117         total_size = total_size + file_list[i]['filesize']
    118     
    119     try:
    120         show_dirinfo(root_dir)
    121         print(str(file_list))
    122         #delete_file()
    123     except Exception as e:
    124         print(e)
  • 相关阅读:
    linux删除大小为0,linux下批量删除空文件(大小等于0的文件) 和 乱码文件
    在 VMware 上启用 SCSI_ID
    vmware中的RHEL scsi_id不显示虚拟磁盘的wwid的问题
    spring cloud 集成和使用
    spring cloud alibaba 常见用法
    rabbitmq 和 erlang window 安装
    系统架构 垂直拓展 水平拓展的区别
    SPI 服务提供者接口
    摩斯密码
    vue3 pinia 和 vuex的对比
  • 原文地址:https://www.cnblogs.com/hushaojun/p/4563476.html
Copyright © 2020-2023  润新知