用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中的异常处理学习笔记
Jan 28 Python
Python学习之用pygal画世界地图实例
Dec 07 Python
浅析Python数据处理
May 02 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
python 实现返回一个列表中出现次数最多的元素方法
Jun 11 Python
Django model update的多种用法介绍
Mar 28 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
在keras中实现查看其训练loss值
Jun 16 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 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+MySQL删除操作实例
2015/01/21 PHP
php集成动态口令认证
2016/07/21 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
php中的依赖注入实例详解
2019/08/14 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
jquery移动节点实例
2015/01/14 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
你不知道的 javascript【推荐】
2017/01/08 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
es7学习教程之fetch解决异步嵌套问题的方法示例
2017/07/21 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
vue单应用在ios系统中实现微信分享功能操作
2020/09/07 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
详解在Python和IPython中使用Docker
2015/04/28 Python
django主动抛出403异常的方法详解
2019/01/04 Python
利用Python绘制有趣的万圣节南瓜怪效果
2019/10/31 Python
python实现实时视频流播放代码实例
2020/01/11 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
纯CSS实现的大小渐变、渐远效果
2014/04/15 HTML / CSS
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
初二学习计划书范文
2014/04/27 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
离婚起诉书范本
2015/05/18 职场文书
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers