用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数据类型之间的转换
Jun 08 Python
Python学习小技巧之列表项的拼接
May 20 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
Mar 05 Python
python机器学习之随机森林(七)
Mar 26 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
python简易远程控制单线程版
Jun 20 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python之当你发现QTimer不能用时的解决方法
Jun 21 Python
python print出共轭复数的方法详解
Jun 25 Python
使用Rasterio读取栅格数据的实例讲解
Nov 26 Python
Django多数据库联用实现方法解析
Nov 12 Python
用python读取xlsx文件
Dec 17 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
linux iconv方法的使用
2011/10/01 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
php 在windows下配置虚拟目录的方法介绍
2013/06/26 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
判断文件是否正在被使用的JS代码
2013/12/21 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
Bootstrap零基础入门教程(二)
2016/07/18 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
关于Angularjs中跨域设置白名单问题
2018/04/17 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
详解async/await 异步应用的常用场景
2019/05/13 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
原生JS实现pc端轮播图效果
2020/12/21 Javascript
python生成指定长度的随机数密码
2014/01/23 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
python如何读取bin文件并下发串口
2019/07/05 Python
Django 用户认证组件使用详解
2019/07/23 Python
dpn网络的pytorch实现方式
2020/01/14 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
创先争优活动承诺书
2014/08/30 职场文书
关于学习的决心书
2015/02/05 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
初中英语教学反思范文
2016/02/15 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
Python中文纠错的简单实现
2021/07/07 Python