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

Python切割大日志文件幾種方法

 更新時(shí)間:2025年12月28日 15:17:40   作者:IT-Lenjor  
文本文介紹了如何通過(guò)三種方式處理過(guò)大日志文件,包括按文件數(shù)量、按文件大小和按行數(shù)分割,以方便排查問(wèn)題,感興趣的可以了解一下

背景

工作線(xiàn)上報(bào)錯(cuò)了,找運(yùn)維下載了線(xiàn)上的日志文件排查問(wèn)題,但是日志文件太大了,沒(méi)辦法用NotePad++打開(kāi),于是乎想著要切割一下日志文件

方法一:指定目標(biāo)文件數(shù)量分割

import os

# 要分割的文件
sourceFileName = 'normal-app.log'
# 分割的文件個(gè)數(shù)
fileNum = 10       

def cutFile():
    print("正在讀取文件...")
    sourceFileData = open(sourceFileName, 'r', encoding='utf-8')
    ListOfLine = sourceFileData.read().splitlines()  # 將讀取的文件內(nèi)容按行分割,然后存到一個(gè)列表中
    totalLine = len(ListOfLine)
    print("文件共有" + str(totalLine) + "行")
    print("請(qǐng)輸入需要將文件分割的個(gè)數(shù):") 
    p = totalLine//fileNum + 1
    print("需要將文件分成"+str(fileNum)+"個(gè)子文件")
    print("每個(gè)文件最多有"+str(p)+"行")
    print("開(kāi)始進(jìn)行分割···")
    for i in range(fileNum):
        destFileName = os.path.splitext(sourceFileName)[
            0] + "_" + str(i + 1)+".log"
        print("正在生成子文件" + destFileName)
        destFileData = open(destFileName, "w", encoding='utf-8')
        if(i == fileNum-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("分割完成")

if __name__ == '__main__':
    cutFile()

方法二:指定文件大小分割

這種方法是按照大小分割文件,會(huì)存在同一行被分割在兩個(gè)文件中的情況

import os

filename = "normal-app.log"  # 需要進(jìn)行分割的文件
size = 10000000  # 分割大小10M

def createSubFile(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 cutFile(filename, size):
    with open(filename, 'rb') as fin:
        buf = fin.read(size)
        sub = 1
        while len(buf) > 0:
            sub = createSubFile(filename, sub, buf)
            buf = fin.read(size)
    print("ok")

if __name__ == "__main__":
    cutFile(filename, size)

方法三:指定目標(biāo)行數(shù)分割

import os

# 要分割的文件
sourceFileName = 'normal-app.log'
 # 定義分割的行數(shù)
lineNum = 100000    

def cutFile():
    print("正在讀取文件...")
    sourceFileData = open(sourceFileName, 'r', encoding='utf-8')
    ListOfLine = sourceFileData.read().splitlines()  # 將讀取的文件內(nèi)容按行分割,然后存到一個(gè)列表中
    totalLine = len(ListOfLine)
    print("文件共有" + str(totalLine) + "行")
    print("請(qǐng)輸入需要將文件分割的個(gè)數(shù):") 
    fileNum = totalLine//lineNum + 1
    print("需要將文件分成"+str(fileNum)+"個(gè)子文件")
    print("開(kāi)始進(jìn)行分割···")
    for i in range(fileNum):
        destFileName = os.path.splitext(sourceFileName)[
            0] + "_" + str(i + 1)+".log"
        print("正在生成子文件" + destFileName)
        destFileData = open(destFileName, "w", encoding='utf-8')
        if(i == fileNum-1):
            for line in ListOfLine[i*lineNum:]:
                destFileData.write(line+'\n')
        else:
            for line in ListOfLine[i*lineNum:(i+1)*lineNum]:
                destFileData.write(line+'\n')
        destFileData.close()
    print("分割完成")

if __name__ == '__main__':
    cutFile()

到此這篇關(guān)于Python切割大日志文件幾種方法的文章就介紹到這了,更多相關(guān)Python切割大日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的?if?語(yǔ)句及使用方法

    Python中的?if?語(yǔ)句及使用方法

    這篇文章主要介紹了Python中的?if?語(yǔ)句及使用方法,包括條件測(cè)試、if?-else?語(yǔ)句、if?-elif-else?語(yǔ)句以及使用?if?語(yǔ)句處理列表操作,下面內(nèi)容詳細(xì)介紹組要的小伙伴可以參考一下
    2022-03-03
  • windows下pycharm搭建spark環(huán)境并成功運(yùn)行 附源碼

    windows下pycharm搭建spark環(huán)境并成功運(yùn)行 附源碼

    這篇文章主要介紹了windows下pycharm搭建spark環(huán)境并成功運(yùn)行 附源碼,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python seaborn heatmap可視化相關(guān)性矩陣實(shí)例

    python seaborn heatmap可視化相關(guān)性矩陣實(shí)例

    這篇文章主要介紹了python seaborn heatmap可視化相關(guān)性矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行

    python3 如何使用 goto 跳轉(zhuǎn)執(zhí)行到指定代碼行

    這篇文章主要介紹了python3 使用goto跳轉(zhuǎn)執(zhí)行到指定代碼行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python Multiprocessing.Pool進(jìn)程池模塊詳解

    python Multiprocessing.Pool進(jìn)程池模塊詳解

    multiprocessing模塊提供了一個(gè)Process類(lèi)來(lái)代表一個(gè)進(jìn)程對(duì)象,multiprocessing模塊像線(xiàn)程一樣管理進(jìn)程,這個(gè)是multiprocessing的核心,它與threading很相似,對(duì)多核CPU的利用率會(huì)比threading好的多
    2022-10-10
  • python算法與數(shù)據(jù)結(jié)構(gòu)朋友圈與水杯實(shí)驗(yàn)題分析實(shí)例

    python算法與數(shù)據(jù)結(jié)構(gòu)朋友圈與水杯實(shí)驗(yàn)題分析實(shí)例

    這篇文章主要介紹了python算法與數(shù)據(jù)結(jié)構(gòu)朋友圈與水杯實(shí)驗(yàn)題分析,總的來(lái)說(shuō)這并不是難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過(guò)程。希望通過(guò)這道題能給你帶來(lái)一種解題優(yōu)化的思路
    2022-12-12
  • Pandas DataFrame數(shù)據(jù)存儲(chǔ)格式比較分析

    Pandas DataFrame數(shù)據(jù)存儲(chǔ)格式比較分析

    Pandas 支持多種存儲(chǔ)格式,在本文中將對(duì)不同類(lèi)型存儲(chǔ)格式下的Pandas Dataframe的讀取速度、寫(xiě)入速度和大小的進(jìn)行測(cè)試對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-09-09
  • Python中的變量及簡(jiǎn)單數(shù)據(jù)類(lèi)型應(yīng)用

    Python中的變量及簡(jiǎn)單數(shù)據(jù)類(lèi)型應(yīng)用

    這篇文章主要介紹了Python中的變量及簡(jiǎn)單數(shù)據(jù)類(lèi)型應(yīng)用,簡(jiǎn)單的數(shù)據(jù)類(lèi)型包括字符串和數(shù)字,更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-03-03
  • Python網(wǎng)絡(luò)編程之socket與socketserver

    Python網(wǎng)絡(luò)編程之socket與socketserver

    這篇文章介紹了Python網(wǎng)絡(luò)編程之socket與socketserver,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • python獲取當(dāng)前運(yùn)行函數(shù)名稱(chēng)的方法實(shí)例代碼

    python獲取當(dāng)前運(yùn)行函數(shù)名稱(chēng)的方法實(shí)例代碼

    這篇文章主要介紹了python獲取當(dāng)前運(yùn)行函數(shù)名稱(chēng)的方法實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

石楼县| 兰考县| 永城市| 绵阳市| 禄丰县| 眉山市| 炎陵县| 庆元县| 连江县| 郯城县| 阿荣旗| 苗栗市| 洛隆县| 西充县| 寿光市| 锡林郭勒盟| 武安市| 正宁县| 湘乡市| 龙井市| 白河县| 韶关市| 讷河市| 昌都县| 平江县| 兰坪| 错那县| 鄱阳县| 景宁| 开平市| 凉山| 霞浦县| 赫章县| 内黄县| 香格里拉县| 衡山县| 合作市| 镇赉县| 遂川县| 洪江市| 比如县|