最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)大文本文件分割成多個小文件

 更新時間:2021年04月19日 16:51:14   作者:Jepson2017  
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)大文本文件分割成多個小文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文介紹一種將一個大的文本文件分割成多個小文件的方法

方法一:

1.讀取文章所有的行,并存入列表中
2.定義分割成的小文本的行數(shù)
3.將原文本內(nèi)容按一定行數(shù)依次寫入小文件中
4.此方法對較小的大文件比較適合

代碼:

#coding:utf-8
#將大文本文件分割成多個小文本文件
import os

sourceFileName = "test.log" #定義要分割的文件
def cutFile():
    print("正在讀取文件...")
    sourceFileData = open(sourceFileName,'r',encoding='utf-8')
    ListOfLine = sourceFileData.read().splitlines()#將讀取的文件內(nèi)容按行分割,然后存到一個列表中
    n = len(ListOfLine)
    print("文件共有"+str(n)+"行")
    print("請輸入需要將文件分割的個數(shù):")
    m = int(input("")) #定義分割的文件個數(shù)
    p = n//m + 1
    print("需要將文件分成"+str(m)+"個子文件")
    print("每個文件最多有"+str(p)+"行")
    print("開始進(jìn)行分割···")
    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()

方法二:

依次讀取指定行數(shù)的數(shù)據(jù),并寫入新的文件中,對于較大文件,采用此方法

import os

#要分割的文件 
source_file='track.log'

#定義每個子文件的行數(shù)
file_count=10000 #根據(jù)需要自定義

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)
                #如果行數(shù)超過指定的數(shù),且數(shù)據(jù)為一個完整的記錄,則將buf寫入到一個子文件中,并初始化buf
                line_tag=line.strip()[0] #取每一行第一個字符,如果該行為空,會報錯,故加上前面判斷
                if len(buf) >= count and line_tag == '*': #每一個新的記錄數(shù)據(jù)是從*標(biāo)識開始
                    buf = buf[:-1]
                    sub = mk_SubFile(buf,filename,sub) #將buf寫入子文件中
                    buf = [line] #初始化下一個子文件的buf,第一行為*開頭的
                
        #最后一個文件,文件行數(shù)可能不足指定的數(shù)
        if len(buf) != 0:
            sub = mk_SubFile(buf,filename,sub)
    print("ok")


if __name__ == '__main__':
    split_By_LineCount(source_file,file_count)#要分割的文件名和每個子文件的行數(shù)

方法二中日志格式如下:

每一條完整的是記錄是以*號開頭,為了在子文件中不出現(xiàn)被截斷的數(shù)據(jù)記錄,因此需要確保每一個buf中是完整的記錄,判斷方法見代碼

方法三:基于大小分割

# -*- coding: utf-8 -*-

#這種方法是按照大小分割文件,會存在同一行被分割在兩個文件中的情況

import os

filename = "track.log"#需要進(jìn)行分割的文件
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)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?Decorator的設(shè)計模式演繹過程解析

    Python?Decorator的設(shè)計模式演繹過程解析

    本文主要梳理了Python?decorator的實現(xiàn)思路,解釋了為什么Python?decorator是現(xiàn)在這個樣子,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python實戰(zhàn)之德州撲克第二步-判斷牌型

    python實戰(zhàn)之德州撲克第二步-判斷牌型

    這篇文章主要介紹了python實戰(zhàn)之德州撲克第二步-判斷牌型,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解python 支持向量機(SVM)算法

    詳解python 支持向量機(SVM)算法

    這篇文章主要介紹了python SVM算法的相關(guān)資料,幫助大家更好的利用python進(jìn)行數(shù)據(jù)分析,感興趣的朋友可以了解下
    2020-09-09
  • python time()的實例用法

    python time()的實例用法

    在本篇文章里小編給大家整理了關(guān)于如何使用python time()方法,需要的朋友們可以參考下。
    2020-11-11
  • python實現(xiàn)LBP方法提取圖像紋理特征實現(xiàn)分類的步驟

    python實現(xiàn)LBP方法提取圖像紋理特征實現(xiàn)分類的步驟

    這篇文章主要介紹了python實現(xiàn)LBP方法提取圖像紋理特征實現(xiàn)分類的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python字符串替換第一個字符串的方法

    python字符串替換第一個字符串的方法

    這篇文章主要介紹了python字符串替換第一個字符串的方法,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Django實現(xiàn)自定義路由轉(zhuǎn)換器

    Django實現(xiàn)自定義路由轉(zhuǎn)換器

    有時候上面的內(nèi)置的url轉(zhuǎn)換器并不能滿足我們的需求,因此django給我們提供了一個接口可以讓我們自己定義自己的url轉(zhuǎn)換器,那么如何實現(xiàn),本文就來介紹一下
    2021-05-05
  • python釘釘機器人運維腳本監(jiān)控實例

    python釘釘機器人運維腳本監(jiān)控實例

    今天小編就為大家分享一篇python釘釘機器人運維腳本監(jiān)控實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 分享7個 Python 實戰(zhàn)項目練習(xí)

    分享7個 Python 實戰(zhàn)項目練習(xí)

    這篇文章主要介紹了分享7個 Python 實戰(zhàn)項目代碼,經(jīng)過Python3.6.4調(diào)試通過的代碼,就具一點的參考價值,需要的小伙伴可以參考一下
    2022-03-03
  • python的構(gòu)建工具setup.py的方法使用示例

    python的構(gòu)建工具setup.py的方法使用示例

    本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10

最新評論

黔西县| 蒙山县| 万山特区| 宁河县| 南郑县| 黔西县| 博爱县| 荆门市| 固始县| 顺昌县| 景谷| 榆林市| 金山区| 重庆市| 炎陵县| 济南市| 大荔县| 民县| 万年县| 巫山县| 银川市| 兰考县| 绿春县| 黔东| 长沙市| 丹凤县| 花莲县| 五华县| 新巴尔虎左旗| 开平市| 临高县| 株洲市| 永仁县| 开平市| 耒阳市| 清丰县| 怀化市| 甘泉县| 修文县| 务川| 台南县|