介绍
这篇文章将为大家详细讲解有关使用Python实现大文本文件切割的案例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
在实际工作中,有些场景下,因为产品既有功能限制,不支持特大文件的直接处理,需要把大文件进行切割处理。
当然可以通过文本编辑器编辑工具,或者从网上下载一些文件切割器之类的。但这些要么手工操作太麻烦,要么不能满足自定义需求。
而且,对程序员来说,DIY一个轮子还是有必要的。
Python作为快速开发工具,其代码表达力强,开发效率高,因此用Python快速写一个,还是可行的。
<强>需求描述:强>
输入:给定一个带列头的csv文件,或者txt文件,或者其他文本文件。
输出:指定单文件内部行数的一系列可区分小文件。
开发环境:Python 3.6
<强>代码如下:强>
#, - *安康;编码:cp936 - * - import 操作系统 import 时间 , def mkSubFile(线、头,srcName,子): ,(des_filename, extname],=, os.path.splitext (srcName)=,,filename  des_filename +, & # 39; _ # 39;, +, str(子),+ extname ,打印(,& # 39;make 文件:,% & # 39;,%文件名) ,fout =, open (filename, & # 39; w # 39;) ,试一试: fout.writelines才能((头)) fout.writelines才能(线) return 才能;sub  + 1 ,最后: fout.close才能() , def splitByLineCount(文件名,计数): ,fin =, open (filename, & # 39; " # 39;) ,试一试: 时间=head 才能;fin.readline () 时间=buf 才能;[] sub 才能=1 for 才能;line 鳍:拷贝 ,,buf.append(线) ,,if len (buf),==,数: ,,,sub =, mkSubFile (buf、头、文件名、接头) ,,,buf =, [] if 才能len (buf), !=, 0: ,,sub =, mkSubFile (buf、头、文件名、接头), ,最后: fin.close才能() , if __name__ ==, & # 39; __main__ # 39;:=,,begin  time.time () ,splitByLineCount(& # 39;盂县. csv # 39;, 600000) ,最终获得=,time.time () ,打印(& # 39;time  is % d seconds & # 39;, %,(最终获得;安康;开始))
<强>测试结果:强>
1.4 gb的csv文件,13列数据,切分成23个小文件,耗时55秒。
关于“使用Python实现大文本文件切割的案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。