91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何實現大文本文件分割成多個小文件

發布時間:2021-04-20 10:10:10 來源:億速云 閱讀:507 作者:小新 欄目:開發技術

小編給大家分享一下python如何實現大文本文件分割成多個小文件,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

python可以做什么

Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。

方法一:

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

代碼:

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

sourceFileName = "test.log" #定義要分割的文件
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()

方法二:

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

import os

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

#定義每個子文件的行數
file_count=10000 #根據需要自定義

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


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

方法二中日志格式如下:
每一條完整的是記錄是以*號開頭,為了在子文件中不出現被截斷的數據記錄,因此需要確保每一個buf中是完整的記錄,判斷方法見代碼

python如何實現大文本文件分割成多個小文件

方法三:基于大小分割

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

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

import os

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

看完了這篇文章,相信你對“python如何實現大文本文件分割成多個小文件”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

册亨县| 社会| 惠东县| 昂仁县| 禄丰县| 湟中县| 岑巩县| 微山县| 沁源县| 石棉县| 汉阴县| 乳山市| 固原市| 郴州市| 积石山| 加查县| 青田县| 河源市| 海口市| 梁河县| 雷山县| 新邵县| 鲁甸县| 金川县| 荆州市| 鸡东县| 河西区| 筠连县| 峡江县| 房产| 丰都县| 南安市| 霍州市| 科技| 峡江县| 修文县| 滕州市| 麟游县| 修水县| 梓潼县| 陇南市|