__author__ = 'Administrator' # -*- coding: utf-8 -*- ''' 聲明一個類,該類的參數是一個字符串 傳一個文件和一個結果文件,若是該文件中包含有指定的字符串,將該行信息輸出至結果文件中 ''' class FileUtil: def __init__(self,filename): self.filename = filename def createindexfile(self,stringdata): fwrite = open(self.filename,'a') fl2 =open("d:/bak/bak/test.index",'a+b') #讀取到文件的最後一個位置,往前讀8位,前4位爲索引,後四位爲數據的長度 i = 1 if fl2.tell() >=8: fl2.seek(-8,2) if fl2.readable(): bindex = fl2.read(8) if bindex is None: print (bindex +" is none") else: i = int(bindex[0:4])+1 indexcontent = str.format("%04d%04d"%(i,len(stringdata))) fl2.write(indexcontent.encode("UTF-8") ) fwrite.write(stringdata) fwrite.close() fl2.close() def getmsgbyIndex(self,index): print(index) #打開索引文件讀取 fread = open(self.filename,'r') #打開數據文件讀取 findexread =open("d:/bak/bak/test.index",'r') #按索引標誌讀取到對應的地址,每讀一次,動態增長一個數據 istart =0 for i in range(1,index): strindex = findexread.read(8) istart += int(strindex[4:]) #最終讀取數據返回 strindex = findexread.read(8) fread.seek(istart) k = int(strindex[4:]) content =fread.read(k) print(content+"===") return content if __name__ == '__main__': fl = FileUtil("d:/bak/bak/test.aa") fl.createindexfile("123456") fl.createindexfile("456789100320103") for i in range(1,8): fl.getmsgbyIndex(i)