⽤Python实现⼤⽂本⽂件切割的⽅法
在实际⼯作中,有些场景下,因为产品既有功能限制,不⽀持特⼤⽂件的直接处理,需要把⼤⽂件进⾏切割处理。
当然可以通过UltraEdit编辑⼯具,或者从⽹上下载⼀些⽂件切割器之类的。但这些要么⼿⼯操作太⿇烦,要么不能满⾜⾃定义需求。
⽽且,对程序员来说,DIY⼀个轮⼦还是有必要的。
Python作为快速开发⼯具,其代码表达⼒强,开发效率⾼,因此⽤Python快速写⼀个,还是可⾏的。
需求描述:
输⼊:给定⼀个带列头的csv⽂件,或者txt⽂件,或者其他⽂本⽂件。
输出:指定单⽂件内部⾏数的⼀系列可区分⼩⽂件。
开发环境:Python 3.6
代码如下:
# -*- coding: cp936 -*-
import os
import time
def mkSubFile(lines,head,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 = adline()
buf = []
writelines方法的参数可以是sub = 1
for line in fin:
buf.append(line)
if len(buf) == count:
sub = mkSubFile(buf,head,filename,sub)
buf = []
if len(buf) != 0:
sub = mkSubFile(buf,head,filename,sub)
finally:
fin.close()
if __name__ == '__main__':
begin = time.time()
splitByLineCount('盂县.csv',600000)
end = time.time()
print('time is %d seconds ' % (end - begin))
测试结果:
1.4GB的csv⽂件,13列数据,切分成23个⼩⽂件,耗时55秒。
以上这篇⽤Python实现⼤⽂本⽂件切割的⽅法就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。