Python实现大文本文件按行数切割方案

Ivy
Ivy
发布时间:2026-10-13| 6人浏览过
原创

针对产品功能限制导致无法直接处理特大文件的问题,本文提供了一种基于Python的自定义大文本文件切割方案。该方案支持CSV及TXT等格式,按指定行数将大文件拆分为多个带列头的小文件。通过Python 3.6环境下的实际测试,1.4GB CSV文件分割耗时55秒,展示了较高的开发效率与处理性能。

在实际业务场景中,受限于现有产品的功能约束,系统往往无法直接处理超大型文件,因此必须对大文件进行切割处理。

虽然可以使用UltraEdit等编辑工具,或从网络下载专用的文件切割软件,但这些方法要么依赖手工操作且流程繁琐,要么无法灵活满足特定的自定义需求。

对于开发人员而言,自主开发一个专用的处理工具(即“造轮子”)通常是必要且合理的。

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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。