Python实现大文本文件分割成多个小文件 您所在的位置:网站首页 如何拆分文本文件格式 Python实现大文本文件分割成多个小文件

Python实现大文本文件分割成多个小文件

2024-01-18 02:02| 来源: 网络整理| 查看: 265

大文本文件有时在阅读时加载缓慢(尤其是日志文件),或被程序读取时容易出错。参考百度搜索得到的各种文本切割实用软件,往往不支持多文件或切割速度较慢,且无法满足用户自定义的需求。考虑编程实现,利用Python编程语言可以快捷地完成将大文本文件分割成多个小文件,并且拥有非常快的速度。

一、按照大小分割,例如大文件分割成每80KB一个小文件。

Python 代码实现:

# -*- coding: utf-8 -*- #按照大小分割文件 import os filename = "n (2).txt"#需要进行分割的文件,请修改文件名 size = 80000 #分割大小约80K 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)

要实现文件夹内文件批量分割,可以利用循环语句。

如果你的文件夹里的文件有这样规律的命名,要一次性将他们分割。

非常容易完成这一操作,只需要简单修改代码,如下参考,你可以根据你的文件名再做修改。

# -*- coding: utf-8 -*- #这种方法是按照大小分割文件,会存在同一行被分割在两个文件中的情况 import os num = 1 for num in range(1,928): filename = 'n ('+ str(num) + ').txt'#需要进行分割的文件 size = 81000 #分割大小80K 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) num = num + 1

 

二、按照行数量分割。

1.读取文章所有的行,并存入列表中 2.定义分割成的小文本的行数 3.将原文本内容按一定行数依次写入小文件中 4.此方法对较小的大文件比较适合

#coding:utf-8 #将大文本文件分割成多个小文本文件 import os sourceFileName = "wm.txt" #定义要分割的文件 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()



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有