使用Python实现大文本文件切割的案例

  介绍

这篇文章将为大家详细讲解有关使用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实现大文本文件切割的案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

使用Python实现大文本文件切割的案例