用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中的魔法方法深入理解
Jul 09 Python
Python中的True,False条件判断实例分析
Jan 12 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
Python协程的用法和例子详解
Sep 09 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Python实现的矩阵转置与矩阵相乘运算示例
Mar 26 Python
selenium 安装与chromedriver安装的方法步骤
Jun 12 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
django使用xadmin的全局配置详解
Nov 15 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python opencv实现信用卡的数字识别
Jan 12 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之PHP语法学习笔记1
2006/12/17 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
php中几种常见安全设置详解
2010/04/06 PHP
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
简单介绍PHP非阻塞模式
2016/03/03 PHP
JavaScript计算字符串中每个字符出现次数的小例子
2013/07/02 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
JavaScript中函数(Function)的apply与call理解
2015/07/08 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JavaScript人脸识别技术及脸部识别JavaScript类库Tracking.js
2015/09/14 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
jQuery操作css样式
2017/05/15 jQuery
Vue+Flask实现简单的登录验证跳转的示例代码
2018/01/13 Javascript
windows 下python+numpy安装实用教程
2017/12/23 Python
scrapy spider的几种爬取方式实例代码
2018/01/25 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
2020/01/09 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
机电一体化专业应届本科生求职信
2013/09/27 职场文书
路政管理专业推荐信
2013/11/11 职场文书
银行门卫岗位职责
2013/12/29 职场文书
竞选班长演讲稿
2013/12/30 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技