from hashtree import HashTree BLOCK_SIZE=HashTree.BLOCK_SIZE class DataFile: def __init__(self,fileHandle): self._lastIndex=0 self._f=fileHandle @staticmethod def open(filename,mode="rb"): return DataFile(open(filename,mode=mode)) def writeAt(self,i,blockData): if i!=self._lastIndex+1: self._f.seek(i*BLOCK_SIZE) self._f.write(blockData) self._lastIndex=i def readFrom(self,i,byteCount=BLOCK_SIZE): if i!=self._lastIndex+1: self._f.seek(i*BLOCK_SIZE) self._lastIndex=i return self._f.read(byteCount) def close(self): self._f.close()