用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秒。
以上这篇用Python实现大文本文件切割的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
python简单分割文件的方法
本文实例讲述了python简单分割文件的方法.分享给大家供大家参考.具体如下: 有的网站在上传文件时对文件大小有限制,因此可以将大文件分割成多个小文件再上传. #!/usr/bin/env python def split(filename, size): fp = open(filename, 'rb') i = 0 n = 0 temp = open(filename+'.part'+str(i),'wb') buf = fp.read(1024) while(True): temp.wri
-
python分割文件的常用方法
本文大家整理了一些比较好用的关于python分割文件的方法,方法非常的简单实用.分享给大家供大家参考.具体如下: 例子1 指定分割文件大小 配置文件 config.ini: 复制代码 代码如下: [global] #原文件存放目录 dir1=F:\work\python\3595\pyserver\test #新文件存放目录 dir2=F:\work\python\3595\pyserver\test1 python 代码如下: 复制代码 代码如下: #!/usr/bin/python # -*
-
Python实现模拟分割大文件及多线程处理的方法
本文实例讲述了Python实现模拟分割大文件及多线程处理的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python #--*-- coding:utf-8 --*-- from random import randint from time import ctime from time import sleep import queue import threading class MyTask(object): """具体的任务类"&qu
-
python实现任意位置文件分割的实例
应用场景 在嵌入式开发中,常常需要将一个binary文件分割成多个文件,或者将一个binary的某块区域抓成一个单独文件.本篇blog以python为例,实现了以上需求; 实现代码 #!/usr/bin/python """ ./file_split.py, just for testing; """ import sys import os import re from os.path import join from array import
-
Python 逐行分割大txt文件的方法
代码如下所示: # -*- coding: <encoding name> -*- import io LIMIT = 150000 file_count = 0 url_list = [] with io.open('D:\DB_NEW_bak\DB_NEW_20171009_bak.sql','r',encoding='utf-16') as f: for line in f: url_list.append(line) if len(url_list) < LIMIT: conti
-
Python实现分割文件及合并文件的方法
本文实例讲述了Python实现分割文件及合并文件的方法.分享给大家供大家参考.具体如下: 分割文件split.py如下: #!/usr/bin/python ########################################################################## # split a file into a set of parts; join.py puts them back together; # this is a customizable ve
-
Python实现简单文本字符串处理的方法
本文实例讲述了Python实现简单文本字符串处理的方法.分享给大家供大家参考,具体如下: 对于一个文本字符串,可以使用Python的string.split()方法将其切割.下面看看实际运行效果. mySent = 'This book is the best book on python!' print mySent.split() 输出: ['This', 'book', 'is', 'the', 'best', 'book', 'on', 'python!'] 可以看到,切分的效果不错,但
-
Python文本处理之按行处理大文件的方法
以行的形式读出一个文件最简单的方式是使用文件对象的readline().readlines()和xreadlines()方法. Python2.2+为这种频繁的操作提供了一个简化的语法--让文件对象自身在行上高效迭代(这种迭代是严格的向前的). 为了读取整个文件,可能要使用read()方法,且使用字符串的split()来将它拆分WEIGHT行或其他块. 下面是一些例子: >>> for line in open('chap1.txt'): # Python 2.2+ ... # proc
-
用Python实现大文本文件切割的方法
在实际工作中,有些场景下,因为产品既有功能限制,不支持特大文件的直接处理,需要把大文件进行切割处理. 当然可以通过UltraEdit编辑工具,或者从网上下载一些文件切割器之类的.但这些要么手工操作太麻烦,要么不能满足自定义需求. 而且,对程序员来说,DIY一个轮子还是有必要的. Python作为快速开发工具,其代码表达力强,开发效率高,因此用Python快速写一个,还是可行的. 需求描述: 输入:给定一个带列头的csv文件,或者txt文件,或者其他文本文件. 输出:指定单文件内部行数的一系列可区
-
python实现大文本文件分割
本文实例为大家分享了python实现大文本文件分割的具体代码,供大家参考,具体内容如下 开发环境 Python 2 实现效果 通过文件拖拽或文件路径输入,实现自定义大文本文件分割. 代码实现 #coding:gbk import os,sys,shutil is_file_exits=False while not is_file_exits: files_list=[] if(len(sys.argv)==1): print('请输入要切割的文件完整路径:') files_path=raw_i
-
Python实现统计文本文件字数的方法
本文实例讲述了Python实现统计文本文件字数的方法.分享给大家供大家参考,具体如下: 统计文本文件的字数,从当前目录下的file.txt取文件 # -*- coding: GBK -*- import string import sys reload(sys) def compareItems((w1,c1), (w2,c2)): if c1 > c2: return - 1 elif c1 == c2: return cmp(w1, w2) else: return 1 def main()
-
Python批量修改文本文件内容的方法
Python批量替换文件内容,支持嵌套文件夹 import os path="./" for root,dirs,files in os.walk(path): for name in files: #print name if name.endswith(".html"): #print root,dirs,name filename=root+"/"+name f=open(filename,"r") fileconten
-
Python实现大文件排序的方法
本文实例讲述了Python实现大文件排序的方法.分享给大家供大家参考.具体实现方法如下: import gzip import os from multiprocessing import Process, Queue, Pipe, current_process, freeze_support from datetime import datetime def sort_worker(input,output): while True: lines = input.get().splitlin
-
python实现大文本文件分割成多个小文件
本文介绍一种将一个大的文本文件分割成多个小文件的方法 方法一: 1.读取文章所有的行,并存入列表中 2.定义分割成的小文本的行数 3.将原文本内容按一定行数依次写入小文件中 4.此方法对较小的大文件比较适合 代码: #coding:utf-8 #将大文本文件分割成多个小文本文件 import os sourceFileName = "test.log" #定义要分割的文件 def cutFile(): print("正在读取文件...") sourceFileDat
-
使用Python读取大文件的方法
背景 最近处理文本文档时(文件约2GB大小),出现memoryError错误和文件读取太慢的问题,后来找到了两种比较快Large File Reading 的方法,本文将介绍这两种读取方法. 准备工作 我们谈到"文本处理"时,我们通常是指处理的内容.Python 将文本文件的内容读入可以操作的字符串变量非常容易.文件对象提供了三个"读"方法: .read()..readline() 和 .readlines().每种方法可以接受一个变量以限制每次读取的数据量,但它们
-
python创建文本文件的简单方法
python open() 函数以指定模式打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写. w 模式表示打开一个文件只用于写入.如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除.如果该文件不存在,创建新文件. write() 方法用于向文件中写入指定字符串.在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的. 实现代码: #!/usr/bin/python # -*- coding:utf-8 -*- file = o
-
Python实现修改文件内容的方法分析
本文实例讲述了Python实现修改文件内容的方法.分享给大家供大家参考,具体如下: 1 替换文件中的一行 1.1 修改原文件 ① 要把文件中的一行Server=192.168.22.22中的IP地址替换掉,因此把整行替换. data = '' with open('zhai.conf', 'r+') as f: for line in f.readlines(): if(line.find('Server') == 0): line = 'Server=%s' % ('192.168.1.1',
-
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
本文实例讲述了Python统计纯文本文件中英文单词出现个数的方法.分享给大家供大家参考,具体如下: 第一版: 效率低 # -*- coding:utf-8 -*- #!python3 path = 'test.txt' with open(path,encoding='utf-8',newline='') as f: word = [] words_dict= {} for letter in f.read(): if letter.isalnum(): word.append(letter)
随机推荐
- iOS 水波纹动画的实现效果
- Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
- 给php新手谈谈我的学习心得
- 深入C/C++浮点数在内存中的存储方式详解
- Android Retrofit的简单介绍和使用
- Javascript中的 “&” 和 “|” 详解
- Bootstrap模态框(Modal)实现过渡效果
- 高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
- linux ls命令教程及ls命令使用方法
- php线性表顺序存储实现代码(增删查改)
- Open and Print a Word Document
- Ionic默认的Tabs模板使用实例
- C#软件注册码的实现代码
- Yii中创建自己的Widget实例
- 深入分析缓存依赖中cachedependency对象及周边小讲
- 基于mysql的论坛(2)
- Python实现简单生成验证码功能【基于random模块】
- Gradle学习教程之部署上传项目详解
- 讲解vue-router之什么是编程式路由
- Java8时间转换(LocalDateTime)代码实例