用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 18 Python
python绘制简单折线图代码示例
Dec 19 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
选择Python写网络爬虫的优势和理由
Jul 07 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
python实现将range()函数生成的数字存储在一个列表中
Apr 02 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
用Python远程登陆服务器的步骤
Apr 16 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
2016/12/26 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
vue-router相关基础知识及工作原理
2018/03/16 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
实现高性能javascript的注意事项
2019/05/27 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
[04:27]2014DOTA2国际邀请赛 NAVI战队官方纪录片
2014/07/21 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
Python判断两个list是否是父子集关系的实例
2018/05/04 Python
python实现石头剪刀布小游戏
2021/01/20 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
Python实现中值滤波去噪方式
2019/12/18 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
乌鸦喝水教学反思
2014/02/07 职场文书
中国好声音华少广告词
2014/03/17 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
Go归并排序算法的实现方法
2022/04/06 Golang
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript