用Python实现大文本文件切割的方法
作者:zhang_qxian 发布时间:2021-12-19 23:16:53
标签:Python,大文本,文件,切割
在实际工作中,有些场景下,因为产品既有功能限制,不支持特大文件的直接处理,需要把大文件进行切割处理。
当然可以通过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秒。
来源:https://blog.csdn.net/zhang_qxian/article/details/62428492
0
投稿
猜你喜欢
- 本文实例讲述了JS Object.preventExtensions(),Object.seal()与Object.freeze()用法。分
- 我们都知道打开文件有两种方法:f = open()with open() as f:这两种方法的区别就是第一种方法需要我们自己关闭文件;f.
- !!!本博客,是对图像的背景颜色的修改的基础讲解~!!!还包括一个练习——是对背景色修改的一点应用尝试!!!——始终相信学习多一点探索,脚步
- 什么是fixture在一个测试过程中,fixture主要提供以下功能:为测试提供上下文,比如环境变量,数据集(dataset),提供数据,数
- Django rest_framework serializer.HiddenField(default=serializer.Curren
- 本文实例讲述了Python3.5运算符操作。分享给大家供大家参考,具体如下:1、运算符的分类2、算术运算符示例代码:#!/usr/bin/e
- 还是一个关于checkbox的一个普通的效果,就是根据你勾选的checkbox,列出你选择了哪些值演示代码:<!DOCTYPE htm
- 本文实例讲述了python单向链表的基本实现与使用方法。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#! p
- 具体方法:1使用panda read_excel 方法加载excel2使用concat将DataFrame列表进行拼接3然后使用pd.Exc
- array_unique() 定义和用法 array_unique() 函数移除数组中的重复的值,并返回结果数组。 当几个数组元素的值相等时
- 环境变量配置首先需要将anaconda的路径配置进环境变量中,我是用户变量和系统变量都配置了。我的anaconda安装在D:\Anacond
- SQL Server中事务日志的作用:持续记录数据库所有的事务和这些事务对数据库所做的修改;一旦数据库出现灾难事件,就需要事务日志来进行近期
- aspjpeg版本:v1.801 将pic.jpg打上logo.png,可根据图片大小对水印图做适当调整 &
- 如下所示:interval=stats.t.interval(a,b,mean,std)t分布的置信区 间a:置信水平b:检验量的自由度me
- Union 与 Union ALL 的作用都是合并 SELECT 的查询结果集,那么它们有什么不同呢? Union 将查询到的结果集合并后进
- 如下所示:函数说明type()返回数据结构类型(list、dict、numpy.ndarray 等)dtype()返回数据元素的数据类型(i
- 写一个循环删除的过程。 create or replace procedure delBigTab(p_TableName in varch
- 引伸阅读解读absolute与relativeposition:relative/absolute无法冲破的等级定位一直是WEB标准应用中的
- 简介使用百度深度学习框架paddlepaddle对人像图片进行自动化抠图安装根据PaddlePaddle官网命令安装如pip install
- 本文实例为大家分享了python实现抖音视频批量下载的具体代码,供大家参考,具体内容如下这里就拿最近很火的抖音视频为例,利用API来实现用户