在終端測試工作中,經常要抓一晚上的log,導致log的檔案特別大,比如有500m+,用notepad開啟檔案提示檔案過大,無法打卡。在網上也沒找到特別合適的分割檔案的apk,因此在網上找了個按行切割檔案的指令碼,執行指令碼時遇到一些報錯,同時也有一些看不明白的**,因此自己做了一些修改和刪減,最後可以正常執行。**如下:
import os
import time
def mksubfile(lines, srcname, sub):
[des_filename, extname] = os.path.splitext(srcname)
filename = des_filename + '_' + str(sub) + extname
print('make file: %s' % filename)
fout = open(filename, 'wb')
fout.writelines(lines)
fout.close()
sub+=1
return sub
def splitbylinecount(filename, count):
fin = open(filename, 'rb')
head = fin.readlines() #list
print(len(head))
buf =
sub = 1
for line in head:
if len(buf) == count:
sub = mksubfile(buf, filename, sub)
buf=
else:
if len(buf) !=0: #剩餘的行數儲存在單獨的檔案裡
sub = mksubfile(buf, filename, sub)
fin.close()
if __name__ == '__main__':
begin = time.time()
splitbylinecount(r'd:\log\serial-com3\20200512_20_17_40.log', 600000)
end = time.time()
print('time is %d seconds ' % (end - begin))
Linux shell 按行切割大檔案
最近專案中,檔案內容有點多,想刪除一部分的資料,如檔案有1000行,想保留600行 僅用來舉例,實際需求更複雜些 該怎麼辦呢?不如把檔案切開來,想到用 split 試試 引數說明 b,bytes size 對file進行切分,每個小檔案大小為size。可以指定單位b,k,m。l,lines numb...
按行讀取檔案
const string strurlfilename testurl.txt ifstream fin strurlfilename.c str fstream binary if fin fin.eof string serverurl getline fin,serverurl info lo...
按行合併檔案
paste paste d s file1 file2 選項含義如下 d 指定不同於空格或t a b鍵的域分隔符。例如用 分隔域,使用 d s 將每個檔案合併成行而不是按行貼上。使用標準輸入。例如ls l paste 意即只在一列上顯示輸出 file1abc file2123 如何合併兩個檔案,得到...