用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获取远程文件大小的函数代码分享
May 13 Python
Python实现的字典值比较功能示例
Jan 08 Python
python使用pycharm环境调用opencv库
Feb 11 Python
python对视频画框标记后保存的方法
Dec 07 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
python matplotlib库直方图绘制详解
Aug 10 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
Python Dataframe常见索引方式详解
May 27 Python
举例讲解Python装饰器
Dec 24 Python
python绘制高斯曲线
Feb 19 Python
解决numpy和torch数据类型转化的问题
May 23 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP精确计算功能示例
2016/11/29 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
jQuery Validate 相关参数及常用的自定义验证规则
2017/03/06 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
2017/06/04 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Pytorch入门之mnist分类实例
2018/04/14 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
python标识符命名规范原理解析
2020/01/10 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
如何学习Python time模块
2020/06/03 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
Python字典dict常用方法函数实例
2020/11/09 Python
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
党组织公开承诺书
2014/03/29 职场文书
售后客服工作职责
2014/06/16 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
JavaScript的function函数详细介绍
2021/11/20 Javascript