需求:公司需要把日志进行打包以及压缩,日志分为两种格式
第一种:2019-10-12.log (属于文件,需要每天进行压缩)
第二种:2019-10 (属于文件夹,只需要把上个月的文件夹进行压缩)
这里将两种整合到一个脚本里,让其每天执行。如果遇到第二种情况,就判断有没有属于上个月的文件夹,如果有,就将其压缩打包,如果没有,就跳过
import os import zipfile import datetime,time from dateutil.relativedelta import relativedelta ######################################################################### # File Name: log_zip.py # Created on: 2019-11-25 16:30:46 # Author: xieys # Last Modified: 2019-11-25 16:30:46 # Description: # 需求:需要把日志文件进行打包,这里有两种格式 #第一种格式:2019-11-24.log (属于文件) #第二种格式:2019-10 (属于文件夹) ######################################################################### tanyu_writeLog = r\'D:\IIS_html\KMMicro_Food_Tanyu\WriteLog\' wcf_tanyu = r\'D:\IIS_html\KMMicro_WCF_Tanyu\Log\INFO\2019\' infomation_tanyu_nlog = r\'D:\IIS_html\KMMicro_Infomation_Tanyu\Logs\NLog\Debug\' infomation_tanyu_debug = r\'D:\IIS_html\KMMicro_Infomation_Tanyu\Logs\DEBUG\2019\' def tar_log(path,strfdate): if strfdate == \'%Y-%m-%d\': log_file = \'%s.log\'% ((datetime.date.today() + datetime.timedelta(days = -1)).strftime(strfdate)) base_file = os.path.join(path, log_file) if os.path.exists(base_file): zip_file = zipfile.ZipFile(\'%s.zip\'%base_file,\'w\', zipfile.ZIP_STORED, True) os.chdir(path) zip_file.write(log_file, compress_type=zipfile.ZIP_LZMA) zip_file.close() os.remove(base_file) else: dir_name = os.path.join(path,(datetime.date.today() - relativedelta(months=+1)).strftime(strfdate)) if os.path.exists(dir_name) and os.path.isdir(dir_name): zip_file = zipfile.ZipFile(\'%s.zip\' % dir_name,\'w\', zipfile.ZIP_STORED, True) os.chdir(path) file_ls = tar_dir(dir_name,[]) for i in file_ls: log_file = i.replace(path+\'\\\',\'\') zip_file.write(log_file, compress_type=zipfile.ZIP_LZMA) if os.path.isdir(i): continue else: os.remove(i) zip_file.close() emp_dir = reversed(tar_dir(dir_name,[])) for i in emp_dir: try: os.removedirs(i) except Exception as e: pass else: pass def tar_dir(path,file_list): \'\'\' 递归获取所有文件以及文件夹路径,然后返回 :param path: :param file_list: :return: \'\'\' for i in os.listdir(path): files = os.path.join(path,i) if os.path.isdir(files): file_list.append(files) tar_dir(files,file_list) else: file_list.append(files) # file_list.append(os.path.join(os.path.basename(path),i)) return file_list if __name__ == \'__main__\': tar_log(tanyu_writeLog,\'%Y-%m-%d\') tar_log(wcf_tanyu,\'%Y-%m\') tar_log(infomation_tanyu_nlog,\'%Y-%m-%d\') tar_log(infomation_tanyu_debug ,\'%Y-%m\')