用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获取指定网页上所有超链接的方法
Apr 04 Python
python threading模块操作多线程介绍
Apr 08 Python
Python线程中对join方法的运用的教程
Apr 09 Python
Python 3中的yield from语法详解
Jan 18 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
Jan 11 Python
django允许外部访问的实例讲解
May 14 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
python 实现识别图片上的数字
Jul 30 Python
python实现批量文件重命名
Oct 31 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 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 Sql Server连接失败问题及解决办法
2009/08/07 PHP
PHP 基本语法格式
2009/12/15 PHP
百度地图API使用方法详解
2015/08/25 PHP
对比分析json及XML
2014/11/28 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
2015/10/22 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
全面了解javascript中的错误处理机制
2016/07/18 Javascript
AngularJS自定义插件实现网站用户引导功能示例
2016/11/07 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
python自动翻译实现方法
2016/05/28 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
快速解决vue.js 模板和jinja 模板冲突的问题
2019/07/26 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
德国足球商店:OUTFITTER
2019/05/06 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
若干个Java基础面试题
2015/05/19 面试题
园林资料员岗位职责
2013/12/30 职场文书
青年教师培训方案
2014/02/06 职场文书
师恩难忘教学反思
2014/04/27 职场文书
英文求职信范文
2014/05/23 职场文书
护林防火标语
2014/06/27 职场文书
春季运动会开幕词
2015/01/28 职场文书