`
cooler1217
  • 浏览: 378736 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

文件切割 python

 
阅读更多
对文件进形切割的处理  考虑到文件在切的时候,还在边写内容,所以掉了shell脚本


源码如下

原创

配置文件内容

knife.cfg

[split_config]
path=c:\
name=test
suf=txt
size=1
unit=K
count=5



#!/usr/local/bin/python
# -*- coding: utf-8 -*-
'''
Created on 2012-2-15

@author: cooler
'''

import ConfigParser
from datetime import datetime
import os
from os.path import getsize


c_path = "../conf/knife.cfg"

class fileSplit:
    
    c_line = 0; # 当前文件在多少行
    f_count = 1 # 拆装文件后缀
    d_flag = False # 判断文件是否删除
    path = ""
    conf = {}
    
    #获取配置文件信息
    def getCfg(self):
        cp = ConfigParser.ConfigParser()
        cp.read(c_path)
        self.conf["path"] = cp.get("split_config", "path").strip()
        self.conf["name"] = cp.get("split_config", "name").strip()
        self.conf["size"] = cp.get("split_config", "size").strip()
        self.conf["unit"] = cp.get("split_config", "unit").strip()
        self.conf["count"] = cp.get("split_config", "count").strip()
        self.conf["suf"] = cp.get("split_config", "suf").strip()
        #print self.conf["unit"]=='M' ,self.conf["unit"]=='K'
        if(self.conf["unit"]=='M'):
            self.conf['size'] = int(self.conf['size'])*(1024*1024)
        elif(self.conf["unit"]=='K'):
            self.conf['size'] = int(self.conf['size'])*(1024)
        else :
             self.conf['size'] = int(self.conf['size'])*(1024*1024)
    #判断是否超过配置文件大小
    def overSize(self):
        size = getsize(self.conf['path']+self.conf['name']+str(self.f_count)+"."+self.conf['suf'])
        #print size,self.conf['size']
        if(size > int(self.conf['size'])):
            return True
        else :
            return False
    #获取源文件行数
    def getLength(self):
        try:
            fileHandle = open(self.conf['path']+self.conf['name']+"."+self.conf['suf'])
            c_list = fileHandle.readlines()  
            return len(c_list)
        except:
            print " target file is not exist"
    #切割文件
    def knife(self,c_size): 
        try:
            fileHandle = open(self.conf['path']+self.conf['name']+"."+self.conf['suf'])
            c_list = fileHandle.readlines() 
            dtime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            print "has new log  " +  dtime + "  lineCount: " + str(len(c_list))
            for i in range(self.c_line,len(c_list)):
                #print i , (i+1)==len(c_list),len(c_list)
                #if ((i+1)==len(c_list)): # 设置删除文件调剂
                #    self.d_flag = True
                #else :
                #    self.d_flag = False
                self.newFile(c_list[i])
            fileHandle.close() 
            self.c_line = len(c_list) # 一次处理完数据   这个变量可以启用
            self.delContentByNum(0, len(c_list))
        except:
            print "target file is not exist"
    #生成新文件
    def newFile(self,strp):
        try:
            f = file(self.conf['path']+self.conf['name']+str(self.f_count)+"."+self.conf['suf'], r'a') 
            f.write(strp) 
            f.close() 
            if(self.overSize()):
                #if(self.d_flag==False):
                    dtime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
                    print "new file dtime:  " +  dtime + "  count : " + str(self.f_count)
                    self.f_count=self.f_count+1
                    if( self.f_count>int(self.conf['count'])):
                            self.removeFile()
                            f = file(self.conf['path']+self.conf['name']+str(self.f_count)+"."+self.conf['suf'], r'a')
                            f.close()
        except:
            print "no such file ~~ new file failure"
    #删除前一个文件
    def removeFile(self):
        try:
            path = self.conf['path']+self.conf['name']+str(self.f_count-(int(self.conf['count'])))+"."+self.conf['suf']
            os.remove(path)
        except:
            print "no such file ~~ remove failure"
    #删除元日志文件的前部分 调用linux命令删除源文件中的内容
    def delContentByNum(self,fromNum,toNum):
        common = "sed -i '"+str(fromNum+1)+","+str(toNum)+"d' " + self.conf['path']+self.conf['name']+"."+self.conf['suf']+""
        os.popen(common)
        self.c_line=0

if __name__ == '__main__':
    fs = fileSplit()
    while True:
        fs.getCfg()
        if(fs.getLength() > fs.c_line):
            #print fs.getLength
            fs.knife(fs.conf['size'])
    #pass
    #os.remove("c:\test2.txt")

分享到:
评论

相关推荐

    python脚本拆分bin文件

    python脚本拆分bin文件

    读取json文件切割图集

    "读取json文件切割图集"是一个针对这个需求的Python脚本,用于从json配置文件中解析信息,并根据指定规则对图集进行切割,以便于单独使用每个图像。本文将详细讲解这个过程涉及的Python编程知识、json文件处理以及...

    txt_wave_cut20181020_时间标签语音切割python_

    标题“txt_wave_cut20181020_时间标签语音切割python_”表明这是一个关于使用Python进行时间标签语音切割的项目,日期为2018年10月20日。描述中提到,该项目利用了PYQT5库来创建用户界面(UI),使得用户能够更直观...

    用Python实现大文本文件切割的方法

    ### 用Python实现大文本文件切割的方法 在日常的工作中,我们经常遇到需要处理大量数据的情况,特别是当数据量非常大时,如何有效地管理和处理这些数据成为了一个挑战。有时候,由于软件的功能限制或性能问题,我们...

    读取plist文件切割图集

    本教程将详细讲解如何使用Python来读取.plist文件并进行图集的切割,以便在游戏中正确地加载和显示这些小图。 首先,我们需要了解.plist文件的结构。.plist是苹果公司的属性列表(Property List)文件格式,它可以...

    文件切割和合并工具

    在IT领域,文件管理是日常工作中不可或缺的一部分,而文件切割和合并工具则为处理大文件提供了便利。本文将深入探讨这两个概念以及相关的编程实现。 文件切割是指将一个较大的文件分割成若干个小文件,以便于存储、...

    文件切割.zip用于分割大文件

    在"文件切割.zip"中,可能包含了一个Python脚本或其他程序,用于执行这个功能。Python是一种流行的编程语言,因其简洁和强大的文件操作能力而常被用于此类任务。 在Python中,实现文件切割通常涉及到读取大文件并...

    Python基于PIL的png图像切割工具.zip

    总的来说,“Python基于PIL的png图像切割工具.zip”提供的源码示例是一个基础的图像切割应用,通过PIL库实现了对PNG图像的读取、切割和保存,展示了Python在图像处理方面的强大功能。开发者可以根据自己的需求对这个...

    文本切割器,用于大文本(.log)切割

    考虑编程实现,利用Python编程语言可以快捷地完成将大文本文件分割成多个小文件,并且拥有非常快的速度. 使用教程,仅需把需要切割的.log文件放入"需分割文件",然后点击data.exe运行即可,(固定值以100w行为一次切割,...

    基于python+gurobi的列生成算法求解钢管切割问题

    在这个文件中,你可以找到Python代码实现列生成算法的细节,包括数据输入、模型构建、求解过程和结果分析。 学习这个例子,你可以掌握如何利用Python和Gurobi工具解决实际的运筹学问题,理解列生成算法的运作机制,...

    TXT文件切割工具

    "TXT文件切割工具"就是针对这种需求而设计的软件,主要用于处理大尺寸的TXT文本文件,将其分割成多个较小的文件,便于管理和传输。下面我们将深入探讨这个工具及其相关的知识点。 1. TXT文件格式: TXT文件是一种最...

    文件切割器

    文件切割器是一款简易的编程项目,常用于将大文件分割成多个小文件,便于存储、传输或管理。在计算机科学中,文件切割是一项常见的技术,尤其对于处理大型数据文件时非常实用。以下是对这一概念的详细说明: 1. **...

    Python-SplitBySubs此Python脚本能根据字幕文件拆分电影文件

    Python脚本——SplitBySubs,是用于根据SRT字幕文件拆分电影文件的强大工具。这个脚本的出现,极大地便利了视频编辑者和字幕工作者,使得他们能够精确地按照时间轴来分割视频,确保视频内容与字幕同步。在本文中,...

    txt 文件切割器 裁剪你的txt文件

    在IT领域,文本处理是一项基础且重要的任务,而“txt 文件切割器 裁剪你的txt文件”这个工具就是专为处理大体积的TXT文本文件而设计的。它允许用户根据自定义的长度或字数标准来分割TXT文件,以满足特定的需求。以下...

    切g.rar_图片切割_文件切割

    在IT领域,文件处理是一项基本技能,而"切g.rar_图片切割_文件切割"的标题和描述暗示了我们将在讨论如何对图片和文件进行切割操作。这种操作通常用于节省存储空间,便于传输,或者在特定场景下进行数据处理。下面...

    Arcgis中利用python语言对shp文件批量计算面积

    Arcgis中利用python语言对shp文件批量计算面积,注释详细,只需更改shp文件输入及结果输出文件夹路径即可

    TXT文本文件切割器

    此外,对于大文件的处理,除了使用TXT文本文件切割器,还可以考虑使用其他的专业工具,如使用编程语言(如Python)编写脚本进行切割,或者寻找支持大文件处理的专用软件。这些方法可能更适合处理GB级别的大文件,能...

    python分割plist

    在这个场景中,"python分割plist"指的是使用Python来处理一种特定类型的文件——Plist(Property List),它通常用于存储iOS和macOS应用的数据。 Plist文件是苹果操作系统中广泛使用的文件格式,用于存储配置信息、...

    python 字符串切割

    在Python编程语言中,字符串处理是一项基础且重要的任务,其中包括字符串切割操作。字符串切割允许我们将一个长字符串分解成多个部分,通常以特定的分隔符为基准。这在处理文本数据、解析URL、分析文件路径等场景中...

    txt大文件切割

    "txt大文件切割"是其中一个关键操作,特别是当面对存储或处理超大文本文件时。以下将详细介绍相关知识点: 1. **大文件切割**:当TXT文件过大,导致无法正常打开、编辑或传输时,我们需要对其进行切割。这通常通过...

Global site tag (gtag.js) - Google Analytics