python实现大文本文件分割成多个小文件
更新时间:2021年4月19日 20:00 点击:1717
本文介绍一种将一个大的文本文件分割成多个小文件的方法
方法一:
1.读取文章所有的行,并存入列表中
2.定义分割成的小文本的行数
3.将原文本内容按一定行数依次写入小文件中
4.此方法对较小的大文件比较适合
代码:
#coding:utf-8 #将大文本文件分割成多个小文本文件 import os sourceFileName = "test.log" #定义要分割的文件 def cutFile(): print("正在读取文件...") sourceFileData = open(sourceFileName,'r',encoding='utf-8') ListOfLine = sourceFileData.read().splitlines()#将读取的文件内容按行分割,然后存到一个列表中 n = len(ListOfLine) print("文件共有"+str(n)+"行") print("请输入需要将文件分割的个数:") m = int(input("")) #定义分割的文件个数 p = n//m + 1 print("需要将文件分成"+str(m)+"个子文件") print("每个文件最多有"+str(p)+"行") print("开始进行分割···") for i in range(m): print("正在生成第"+str(i+1)+"个子文件") destFileName = os.path.splitext(sourceFileName)[0]+"_part"+str(i)+".log" #定义分割后新生成的文件 destFileData = open(destFileName,"w",encoding='utf-8') if(i==m-1): for line in ListOfLine[i*p:]: destFileData.write(line+'\n') else: for line in ListOfLine[i*p:(i+1)*p]: destFileData.write(line+'\n') destFileData.close() print("分割完成") cutFile()
方法二:
依次读取指定行数的数据,并写入新的文件中,对于较大文件,采用此方法
import os #要分割的文件 source_file='track.log' #定义每个子文件的行数 file_count=10000 #根据需要自定义 def mk_SubFile(lines,srcName,sub): [des_filename, extname] = os.path.splitext(srcName) filename = des_filename + '_' + str(sub) + extname print( '正在生成子文件: %s' %filename) with open(filename,'wb') as fout: fout.writelines(lines) return sub + 1 def split_By_LineCount(filename,count): with open(filename,'rb') as fin: buf = [] sub = 1 for line in fin: if len(line.strip())>0: #跳过空行 buf.append(line) #如果行数超过指定的数,且数据为一个完整的记录,则将buf写入到一个子文件中,并初始化buf line_tag=line.strip()[0] #取每一行第一个字符,如果该行为空,会报错,故加上前面判断 if len(buf) >= count and line_tag == '*': #每一个新的记录数据是从*标识开始 buf = buf[:-1] sub = mk_SubFile(buf,filename,sub) #将buf写入子文件中 buf = [line] #初始化下一个子文件的buf,第一行为*开头的 #最后一个文件,文件行数可能不足指定的数 if len(buf) != 0: sub = mk_SubFile(buf,filename,sub) print("ok") if __name__ == '__main__': split_By_LineCount(source_file,file_count)#要分割的文件名和每个子文件的行数
方法二中日志格式如下:
每一条完整的是记录是以*号开头,为了在子文件中不出现被截断的数据记录,因此需要确保每一个buf中是完整的记录,判断方法见代码
方法三:基于大小分割
# -*- coding: utf-8 -*- #这种方法是按照大小分割文件,会存在同一行被分割在两个文件中的情况 import os filename = "track.log"#需要进行分割的文件 size = 10000000 #分割大小10M def mk_SubFile(srcName,sub,buf): [des_filename, extname] = os.path.splitext(srcName) filename = des_filename + '_' + str(sub) + extname print( '正在生成子文件: %s' %filename) with open(filename,'wb') as fout: fout.write(buf) return sub+1 def split_By_size(filename,size): with open(filename,'rb') as fin: buf = fin.read(size) sub = 1 while len(buf)>0: sub = mk_SubFile(filename,sub,buf) buf = fin.read(size) print("ok") if __name__=="__main__": split_By_size(filename, size)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。
相关文章
- 这篇文章主要介绍了python-opencv-画外接矩形框的实例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-04
- 下面小编来给大家演示几个php操作zip文件的实例,我们可以读取zip包中指定文件与删除zip包中指定文件,下面来给大这介绍一下。 从zip压缩文件中提取文件 代...2016-11-25
Jupyter Notebook读取csv文件出现的问题及解决
这篇文章主要介绍了JupyterNotebook读取csv文件出现的问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2023-01-06Python astype(np.float)函数使用方法解析
这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08- 2022虎年新年即将来临,小编为大家带来了一个利用Python编写的虎年烟花特效,堪称全网最绚烂,文中的示例代码简洁易懂,感兴趣的同学可以动手试一试...2022-02-14
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
python-for x in range的用法(注意要点、细节)
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-05-10- 这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
- 这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
- 这篇文章主要介绍了python如何实现b站直播自动发送弹幕,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-02-20
python Matplotlib基础--如何添加文本和标注
这篇文章主要介绍了python Matplotlib基础--如何添加文本和标注,帮助大家更好的利用Matplotlib绘制图表,感兴趣的朋友可以了解下...2021-01-26- 有时我们接受或下载到的PSD文件打开是空白的,那么我们要如何来解决这个 问题了,下面一聚教程小伙伴就为各位介绍Photoshop打开PSD文件空白解决办法。 1、如我们打开...2016-09-14
- C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
- 这篇文章主要介绍了解决python 使用openpyxl读写大文件的坑,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-13
- 这篇文章主要介绍了C#实现HTTP下载文件的方法,包括了HTTP通信的创建、本地文件的写入等,非常具有实用价值,需要的朋友可以参考下...2020-06-25
- 这篇文章主要为大家详细介绍了SpringBoot实现excel文件生成和下载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-09
- 今天小编就为大家分享一篇python 计算方位角实例(根据两点的坐标计算),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-27
php无刷新利用iframe实现页面无刷新上传文件(1/2)
利用form表单的target属性和iframe 一、上传文件的一个php教程方法。 该方法接受一个$file参数,该参数为从客户端获取的$_files变量,返回重新命名后的文件名,如果上传失...2016-11-25- 这篇文章主要为大家详细介绍了python实现双色球随机选号,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-05-02
- 在本篇文章里小编给大家整理的是一篇关于python中使用np.delete()的实例方法,对此有兴趣的朋友们可以学习参考下。...2021-02-01