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


Posted in Python onJanuary 12, 2019

在实际工作中,有些场景下,因为产品既有功能限制,不支持特大文件的直接处理,需要把大文件进行切割处理。

当然可以通过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 = fin.readline()
  buf = []
  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实现大文本文件切割的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python Django模板的使用方法(图文)
Nov 04 Python
Python 字符串操作方法大全
Mar 11 Python
用Python编写一个国际象棋AI程序
Nov 28 Python
总结Python中逻辑运算符的使用
May 13 Python
Python随机读取文件实现实例
May 25 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
Nov 15 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
提取视频中的音频 Python只需要三行代码!
May 10 Python
python实时获取外部程序输出结果的方法
Jan 12 #Python
python实现控制台打印的方法
Jan 12 #Python
python 自定义对象的打印方法
Jan 12 #Python
python设定并获取socket超时时间的方法
Jan 12 #Python
python 限制函数执行时间,自己实现timeout的实例
Jan 12 #Python
Python构建图像分类识别器的方法
Jan 12 #Python
使用python opencv对目录下图片进行去重的方法
Jan 12 #Python
You might like
PHPExcel读取EXCEL中的图片并保存到本地的方法
2015/02/14 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
如何在PHP中使用数组
2020/06/09 PHP
新发现一个骗链接的方法(js读取cookies)
2012/01/11 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
jQuery qrcode生成二维码的方法
2016/04/03 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
Vue EventBus自定义组件事件传递
2018/06/25 Javascript
vue.js 实现点击按钮动态添加li的方法
2018/09/07 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
解决TensorFlow训练内存不断增长,进程被杀死问题
2020/02/05 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
党校学习思想汇报
2014/01/06 职场文书
会计演讲稿范文
2014/05/23 职场文书
小学语文教研活动总结
2014/07/01 职场文书
就业协议书样本
2014/08/20 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python
springboot使用Redis作缓存使用入门教程
2021/07/25 Redis