python文件隨機讀寫例子

__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)
相關文章
相關標籤/搜索