用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中的JSON模块
Apr 08 Python
Python3 适合初学者学习的银行账户登录系统实例
Aug 08 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python3爬取淘宝信息代码分析
Feb 10 Python
python 随机森林算法及其优化详解
Jul 11 Python
pandas DataFrame创建方法的方式
Aug 02 Python
Python3 JSON编码解码方法详解
Sep 06 Python
Django Admin后台添加数据库视图过程解析
Apr 01 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
flask开启多线程的具体方法
Aug 02 Python
python爬虫中的url下载器用法详解
Nov 30 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 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
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
浅谈node中的exports与module.exports的关系
2017/08/01 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
浅谈vue-cli加载不到dev-server.js的解决办法
2017/11/24 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
python 解析html之BeautifulSoup
2009/07/07 Python
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
基于django和dropzone.js实现上传文件
2020/11/24 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
在购买印度民族服饰:Soch
2020/09/15 全球购物
大学毕业生通用自荐信范文
2013/10/31 职场文书
服装公司总经理岗位职责
2013/11/30 职场文书
运动会解说词100字
2014/01/31 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
财务会计岗位职责
2015/02/03 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python