用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简单实现基于SSL的IRC bot实例
Jun 15 Python
python编写简单爬虫资料汇总
Mar 22 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
python调用百度语音识别api
Aug 30 Python
Python中新式类与经典类的区别详析
Jul 10 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Python谱减法语音降噪实例
Dec 18 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
python实现数字炸弹游戏程序
Jul 17 Python
python中如何使用虚拟环境
Oct 14 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
如何在WIN2K下安装PHP4.04
2006/10/09 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
phpfpm的作用和用法
2019/10/10 PHP
巧妙破除网页右键禁用的十大绝招
2006/08/12 Javascript
关于Javascript 的 prototype问题。
2007/01/03 Javascript
jquery.validate使用攻略 第三部
2010/07/01 Javascript
js动态给table添加/删除tr的方法
2013/08/02 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
JavaScript控制网页层收起和展开效果的方法
2015/04/15 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
javascript拖拽效果延伸学习
2016/04/04 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
javascript字体颜色控件的开发 JS实现字体控制
2017/11/27 Javascript
简单的三步vuex入门
2018/05/20 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
python实现mean-shift聚类算法
2020/06/10 Python
python能做哪些生活有趣的事情
2020/09/09 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
浙大网新C/C++面试解惑
2015/05/27 面试题
幼儿园安全生产月活动总结
2014/07/05 职场文书
2014年度思想工作总结
2014/11/27 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书