Python đọc tệp trong bộ đệm

Phương thức 
import io
print[io.DEFAULT_BUFFER_SIZE]
0 thay đổi vị trí tệp hiện tại. Đối số offset cho biết số byte được di chuyển từ đầu tệp
def read_from_buffer[self, pos, numbytes = None]:
        vs = self.videostatus
        piece_index, piece_offset = self.piecepos_from_bytepos[vs, pos]
        if DEBUG:
            log['vod::read_from_buffer: pos', pos, 'numbytes', numbytes, 'piece_index', piece_index, 'piece_offset', piece_offset]
        data = ''
        for i in xrange[piece_index, vs.last_piece + 1]:
            piece = self.get_piece[i]
            if piece is None:
                break
            if piece_offset > 0:
                chunk = piece[piece_offset:]
                piece_offset = 0
            else:
                chunk = piece
            data += chunk
            pos += len[chunk]
            if DEBUG:
                log['vod::read_from_buffer: got whole piece: index', i, 'chunk_len', len[piece], 'data_len', len[data], 'pos', pos]
            if numbytes is not None and len[data] >= numbytes:
                if DEBUG:
                    log['vod::read_from_buffer: got enough data: numbytes', numbytes, 'data_len', len[data]]
                return data

        self.proxy_cond.acquire[]
        try:
            for bstart, bdata in self.proxy_buf.iteritems[]:
                bend = bstart + len[bdata] - 1
                if bstart  0:
                chunk = piece[piece_offset:]
                piece_offset = 0
            else:
                chunk = piece
            data += chunk
            pos += len[chunk]
            if DEBUG:
                log['vod::read_from_buffer: got whole piece: index', i, 'chunk_len', len[piece], 'data_len', len[data], 'pos', pos]
            if numbytes is not None and len[data] >= numbytes:
                if DEBUG:
                    log['vod::read_from_buffer: got enough data: numbytes', numbytes, 'data_len', len[data]]
                return data

        self.proxy_cond.acquire[]
        try:
            for bstart, bdata in self.proxy_buf.iteritems[]:
                bend = bstart + len[bdata] - 1
                if bstart 

Chủ Đề