用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之通过Python连接数据库
Oct 28 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
深入理解python try异常处理机制
Jun 01 Python
python中异常捕获方法详解
Mar 03 Python
《Python学习手册》学习总结
Jan 17 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
python实现机器人卡牌
Oct 06 Python
Python StringIO如何在内存中读写str
Jan 07 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Python基于httpx模块实现发送请求
Jul 07 Python
Python经典五人分鱼实例讲解
Jan 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
全国FM电台频率大全 - 22 重庆市
2020/03/11 无线电
ajax缓存问题解决途径
2006/12/06 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
php 判断网页是否是utf8编码的方法
2014/06/06 PHP
PHP计算一年多少个星期和每周的开始和结束日期
2014/07/01 PHP
php对关联数组循环遍历的实现方法
2015/03/13 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python用match()函数爬数据方法详解
2019/07/23 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
python opencv实现图像配准与比较
2021/02/09 Python
《胡杨》教学反思
2014/02/16 职场文书
人力资源管理求职信
2014/08/07 职场文书
寻找最美家庭活动方案
2014/08/20 职场文书
酒店七夕情人节活动策划方案
2014/08/24 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
分析Netty直接内存原理及应用
2021/06/14 Java/Android