(python)根據檔案行數切割檔案

2021-09-25 20:58:18 字數 1385 閱讀 9532

這是使用python寫的根據檔案行數切割檔案的函式,實測速度尚可,在原始檔大概200w、新檔案20w的情況下測試了5個原始檔,用時14s,基本滿足筆者需要,因此沒有繼續進行優化,設想的優化思路包括使用多執行緒等,需要讀者去完善。。

找到源檔案目錄,利用乙個大迴圈逐個向後推進。大迴圈內有兩個小迴圈:

1、第乙個小迴圈用於填充列表,使其達到新檔案個數要求,一旦個數達到,則進入下乙個小迴圈;

2、第二個小迴圈用於將每新檔案個數的內容寫入到新目錄下的新檔案,不滿足個數則進行下一次大迴圈。

3、最終列表中剩下的內容寫到乙個新檔案中。

import os

import time

def cut_files(filepath,new_filepath,new_file_size):

pathdir=os.listdir(filepath)#找到檔案路徑

list_ips=

file_index,new_file_index=0,0

l=len(pathdir)

#大迴圈,負責向後推進檔案個數

while(file_index=new_file_size):

f=open(new_filepath+str(format(new_file_index,'05.0f'))+".txt","w")

for ip in list_ips[0:new_file_size]:

f.write(ip+"\n")

f.close()

list_ips=list_ips[new_file_size:]

new_file_index+=1

#最終列表中剩餘的內容寫到最後乙個新檔案中

f=open(new_filepath+str(format(new_file_index,'05.0f'))+".txt","w")

for ip in list_ips:

f.write(ip+"\n")

f.close()

if __name__=="__main__":

#源檔案目錄

filepath="f:\\拼接測試資料夾\\"

#切割後檔案儲存目錄

new_filepath="f:\\最終位址\\"

#切割後每個檔案大小

new_file_size=200000

t1=time.time()#計時開始

cut_files(filepath,new_filepath,new_file_size)

print("time:",time.time()-t1)#輸出時間

其中輸出格式使用了「format(new_file_index,『05.0f』)」的方式,作用是使整數個數為5,小數個數為零,前面位數不夠補零,使其最終達到格式化輸出檔名的效果。

linux檔案按照行數切割

公司小站的nginx伺服器日誌一直沒有管理 到發現的時候已經有50g 的logs檔案 檢視起來十分不便 只能將其切割 接下來分享 具體方法 split l 5000 行數 a 5 增加檔名上限 www logs fxingzhanaccess new file prefixaaahz www log...

Python大檔案切割

例如 乙個1t檔案,需要切割成10小檔案,可採用均勻灑水方式進行切割.完美執行 import os source file path r bigfile.csv target file dir os.path.join os.path.dirname os.path.abspath file spl...

python獲取大檔案行數

背景 處理一些日誌或者請求資料時,幾百萬行的資料,有時候在做效能測試任務時估算出大概需要的詞表數,需要一定行數的資料,需要提前看下原始檔案大小,在這記一下,的確比較快 如下 獲取檔案行數,一塊一塊讀取 def get file lines filepath with open filepath,rb...