用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 Web框架Flask中使用百度云存储BCS实例
Feb 08 Python
Python while 循环使用的简单实例
Jun 08 Python
Python如何读取MySQL数据库表数据
Mar 11 Python
python写一个md5解密器示例
Feb 23 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
python模拟登陆,用session维持回话的实例
Dec 27 Python
Python pickle模块实现对象序列化
Nov 22 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
Python实现删除某列中含有空值的行的示例代码
Jul 20 Python
Django如何实现防止XSS攻击
Oct 13 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
Nov 02 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
Session服务器配置指南与使用经验的深入解析
2013/06/17 PHP
asp函数split()对应php函数explode()
2019/02/27 PHP
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
2010/08/12 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
2017/03/21 jQuery
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
Javascript call及apply应用场景及实例
2020/08/26 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Python实现字典的key和values的交换
2015/08/04 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
英语教师个人总结
2015/02/09 职场文书
Python机器学习应用之基于线性判别模型的分类篇详解
2022/01/18 Python
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers