__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)