用Python實現(xiàn)大文本文件切割的方法
在實際工作中,有些場景下,因為產(chǎn)品既有功能限制,不支持特大文件的直接處理,需要把大文件進行切割處理。
當然可以通過UltraEdit編輯工具,或者從網(wǎng)上下載一些文件切割器之類的。但這些要么手工操作太麻煩,要么不能滿足自定義需求。
而且,對程序員來說,DIY一個輪子還是有必要的。
Python作為快速開發(fā)工具,其代碼表達力強,開發(fā)效率高,因此用Python快速寫一個,還是可行的。
需求描述:
輸入:給定一個帶列頭的csv文件,或者txt文件,或者其他文本文件。
輸出:指定單文件內(nèi)部行數(shù)的一系列可區(qū)分小文件。
開發(fā)環(huán)境: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))
測試結(jié)果:
1.4GB的csv文件,13列數(shù)據(jù),切分成23個小文件,耗時55秒。
以上這篇用Python實現(xiàn)大文本文件切割的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python學習筆記之Zip和Enumerate用法實例分析
這篇文章主要介紹了Python學習筆記之Zip和Enumerate用法,結(jié)合實例形式分析了Zip和Enumerate的功能、用法及相關操作注意事項,需要的朋友可以參考下2019-08-08
Python3.6基于正則實現(xiàn)的計算器示例【無優(yōu)化簡單注釋版】
這篇文章主要介紹了Python3.6基于正則實現(xiàn)的計算器,涉及Python基于正則表達式的算術式遍歷、查找及數(shù)學運算相關操作技巧,需要的朋友可以參考下2018-06-06
關于tf.TFRecordReader()函數(shù)的用法解析
今天小編就為大家分享一篇關于tf.TFRecordReader()函數(shù)的用法解析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Django?后端數(shù)據(jù)傳給前端的實現(xiàn)示例
本文主要介紹了Django?后端數(shù)據(jù)傳給前端的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12
Python數(shù)據(jù)結(jié)構與算法(幾種排序)小結(jié)
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構與算法(幾種排序)的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
python中sklearn庫predict及python sklearn linearmodel(
Scikit-learn(sklearn)是機器學習中常用的第三方模塊,對常用的機器學習方法進行了封裝,包括回歸(Regression)、降維(Dimensionality Reduction)、分類(Classfication)、聚類(Clustering)等方法,今天小編給大家分享python中sklearn庫predict的問題,感興趣的朋友一起看看吧2024-02-02

