(self, n)
return data
Read exactly `n` bytes.

        Raise an IncompleteReadError if EOF is reached before `n` bytes can be
        read. The IncompleteReadError.partial attribute of the exception will
        contain the partial read bytes.

        if n is zero, return empty bytes object.

        Returned value is not limited with limit, configured at stream
        creation.

        If stream was paused, this function will automatically resume it if
        needed.
Read exactly `n` bytes.
Read exactly n bytes .
async def readexactly(self, n):
        """Read exactly `n` bytes.

        Raise an IncompleteReadError if EOF is reached before `n` bytes can be
        read. The IncompleteReadError.partial attribute of the exception will
        contain the partial read bytes.

        if n is zero, return empty bytes object.

        Returned value is not limited with limit, configured at stream
        creation.

        If stream was paused, this function will automatically resume it if
        needed.
        """
        if n < 0:
            raise ValueError('readexactly size can not be less than zero')

        if self._exception is not None:
            raise self._exception

        if n == 0:
            return b''

        while len(self._buffer) < n:
            if self._eof:
                incomplete = bytes(self._buffer)
                self._buffer.clear()
                raise exceptions.IncompleteReadError(incomplete, n)

            await self._wait_for_data('readexactly')

        if len(self._buffer) == n:
            data = bytes(self._buffer)
            self._buffer.clear()
        else:
            data = bytes(self._buffer[:n])
            del self._buffer[:n]
        self._maybe_resume_transport()
        return data
async def readexactly ( self , n ) : if n < 0 : raise ValueError ( 'readexactly size can not be less than zero' ) if self . _exception is not None : raise self . _exception if n == 0 : return b'' while len ( self . _buffer ) < n : if self . _eof : incomplete = bytes ( self . _buffer ) self . _buffer . clear ( ) raise exceptions . IncompleteReadError ( incomplete , n ) await self . _wait_for_data ( 'readexactly' ) if len ( self . _buffer ) == n : data = bytes ( self . _buffer ) self . _buffer . clear ( ) else : data = bytes ( self . _buffer [ : n ] ) del self . _buffer [ : n ] self . _maybe_resume_transport ( ) return data