python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件
2017-05-16 16:43
381 查看
#! /usr/bin/env python # -*- coding:utf8 -*- # 切分nginx 按照日期切分日志文件 from __future__ import division import os,sys big_file='/data/logs/media.net.error.log' # 按照文件大小拆分 def split_by_filesize(fromfile,todir,chunksize=0): """ chunksize: 字节建议每100M一个独立的文件 f.read(int byte字节) 100(M) = 100 * 1024 * 1024 (b) = 104857600 (b) """ # 创建切分文件后的临时目录 if not os.path.exists(todir): os.mkdir(todir) else: for fname in os.listdir(todir): os.remove(os.path.join(todir,fname)) # 按文件大小计算可切分的文件个数(100m一个) partnums = os.path.getsize(fromfile) / chunksize # 打开文件 partnum = 0 with open(fromfile,'rb') as f: while True: chunk = f.read(chunksize) # 每次读取100m if not chunk: break filename = os.path.join(todir,big_file.split('/')[-1] + '_part_'+str(partnum)) with open(filename,'wb') as f1: print "正在写入第" + str(partnum) + "个文件" + filename f1.write(chunk) print "第"+ str(partnum) + "个文件写入完成" + filename partnum += 1 # 按照日志日期分割 def split_by_date(srcfile,todir): """ 从源文件srcfile中读取,确定日期,然后将其写入到分片文件中 """ # 读取文件到内存中,利用generator 生成器 with open(srcfile) as f: contents = f.readlines() c = [ line[0:10].strip() for line in contents ] date_l = sorted(set(c),key=c.index) for date in date_l: f_date = date.replace('/','_') filename = os.path.join(todir,srcfile.split('/')[-1] + '_'+ f_date) print "正在写入文件" + filename with open(filename,'wb') as f: for line in contents: d = line[0:10].strip() if d in line and d == date: f.write(line) if __name__ == '__main__': # split_by_filesize(big_file,'/test/',chunksize=100*1024*1024) split_by_date(big_file,'/test/')
相关文章推荐
- log4j配置参数详解——按日志文件大小、日期切分日志文件
- 用FastCopy ver2.11复制指定日期及大小的WINDOWS文件
- (转)如何压缩SQL Server 2005指定数据库文件和日志的大小?
- Python实现文件按照日期命名的方法
- 用python对指定目录下的所有文件(夹)大小进行排序
- log4net按时间日期,文件大小和个数生成日志文件
- linux删除指定日期前的日志文件中的记录
- C++写日志源代码分析,可实现根据日期自动创建文件夹、日志分类、文件大小控制等
- log4j 支持同时按日期和文件大小分割日志
- log4net,既要按日期分割日志文件,又要按文件大小分割。
- 基于log4net的支持动态文件名、按日期和大小自动分割文件的日志组件
- Python快速生成指定大小的大文件
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC SHRINKFILE收缩当前数据库的指定数据或日志文件的大小
- Python 实现指定目录下 删除指定大小的文件
- log4j 写多个日志文件,按照日期每天都记
- shell 按照文件中指定列的数字大小排序
- 日志文件把数据恢复到指定的日期【转载】
- log4j 按级别/日期/大小分文件记录日志
- sed命令截取指定日期内日志文件
- [从头学python] 第06节 文件、日期和日志的摸索