這是使用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...