天使漫步IT工作室

python切割大数据文件(文本)成多个小文件


一、代码

重复造轮子的事情在下是不干的,不过朋友做光学试验要求将12G的文件切割为小文件。

这有点考验人啊,不过在万能的搜索引擎帮助下成功解决了问题。

代码如下:

# -*- coding: utf-8 -*-
import os
import time

def mkSubFile(lines,srcName,sub):
    [des_filename, extname] = os.path.splitext(srcName)
    filename  = des_filename + '_' + str(sub) + extname
    print( 'make file: %s' %filename)
    fout = open(filename,'w')
    try:
        #fout.writelines([head])
        fout.writelines(lines)
        return sub + 1
    finally:
        fout.close()

def splitByLineCount(filename,count):
    fin = open(filename,'r')
    try:
        #head = fin.readline()
        buf = []
        sub = 1
        for line in fin:
            buf.append(line)
            if len(buf) == count:
                sub = mkSubFile(buf,filename,sub)
                buf = []
        if len(buf) != 0:
            sub = mkSubFile(buf,filename,sub)   
    finally:
        fin.close()

if __name__ == '__main__':
    begin = time.time()
    splitByLineCount('D_1kk.dat',10*1000)
    end = time.time()
    print('time is %d seconds ' % (end - begin))

函数splitByLineCount参数二为每个小文件的行数。点击下载文件:python_split_file.py.zip

二、启示

当前页面是本站的「Baidu MIP」版。查看和发表评论请点击:完整版 »