python操作文件目录保留15天的文件

#encoding=utf-8
import os
import logging
import datetime
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(name)s -%(levelname)s -%(message)s')
log = logging.getLogger(__name__)

class FileOprate():
    def __init__(self,obsfn,fp,fn,create_time,update_time,access_time,file_size):
        self.obsfn = obsfn
        self.fp = fp
        self.fn = fn
        self.create_time = create_time
        self.update_time = update_time
        self.access_time = access_time
        self.file_size = file_size

def time2str(time):
    return str(datetime.datetime.fromtimestamp(time)).split('.')[0]

def getAllFiles(folder):
    fo_list = []
    for root,folder_names,file_names in os.walk(folder):
        for file_name in file_names:
            file_path = root + os.sep + file_name
            file_stat = os.stat(file_path)
            ct = file_stat.st_ctime
            ut = file_stat.st_mtime
            at = file_stat.st_atime
            fs = os.path.getsize(file_path)
            fo = FileOprate(file_path,root,file_name,ct,ut,at,fs)
            fo_list.append(fo)            
    return fo_list

'''
保留15天的文件(ceph 存储目录下的日志文件)
'''
def keep_days(folder,appName,days):
    now = datetime.datetime.now()
    last15d = now - datetime.timedelta(days=days)
    fo_list = getAllFiles(folder)
    fo_list_appName = []
    # 过滤掉文件名不包含appName的文件
    for fo in fo_list:
        if appName in fo.fn:
            fo_list_appName.append(fo)
    #保留15天的文件
    for fo in fo_list_appName:
        log.info(str(fo.create_time))
        print (type(fo.create_time))
        print (last15d,type(last15d))
        #t = datetime.datetime.strptime(fo.create_time,'%Y-%m-%d')
        #tdd = datetime.date(t.year,t.month,t.day)
        #if tdd < last15d:
        #    log.info('deleting{}'.format(fo.obsfn))

'''
保留最新的前3个版本文件(ceph 存储目录下的应用文件)
folder:文件目录
appName:文件名称的关键字
num:保留文件版本个数
'''
def keep_three_versions(folder,appName,num):
    fo_list = getAllFiles(folder)
    fo_list_appName = []
    
    for fo in fo_list:
        log.info(fo.obsfn+'-->'+fo.fp+'-->'+fo.fn+'-->'+str(fo.file_size)+'-->'+time2str(fo.create_time)+'-->'+time2str(fo.update_time)+'-->'+time2str(fo.access_time))    
    
    # 过滤掉文件名不包含appName的文件
    for fo in fo_list:
        if appName in fo.fn:
            fo_list_appName.append(fo)
            
    # 对文件进行排序(按文件创建时间倒序排序)
    for fo in fo_list_appName:
        fo_list_appName = sorted(fo_list_appName,key=lambda a:a.create_time,reverse=True)
    
    log.info(os.linesep)    
    # 保留3个版本
    for index,fo in enumerate(fo_list_appName):
        if index > (int(num)-1):
            os.remove(fo.obsfn)
        
    
    for fo in fo_list_appName:
        log.info(fo.obsfn+'-->'+fo.fp+'-->'+fo.fn+'-->'+str(fo.file_size)+'-->'+time2str(fo.create_time)+'-->'+time2str(fo.update_time)+'-->'+time2str(fo.access_time))
    
if __name__=='__main__':
    #keep_three_versions(r'F:	mp	est','app','2')
    keep_days(r'F:	mp	est','app',15)
    
展开阅读全文

页面更新:2024-03-15

标签:文件   文件名   版本   操作   时间   目录   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top