Read and return up to n bytes. If the argument is omitted, None, or negative, data is read and returned until EOF is reached.
(self, n=-1)
| 938 | return True |
| 939 | |
| 940 | def read(self, n=-1): |
| 941 | """Read and return up to n bytes. |
| 942 | If the argument is omitted, None, or negative, data is read and returned until EOF is reached. |
| 943 | """ |
| 944 | if self.closed: |
| 945 | raise ValueError("read from closed file.") |
| 946 | if n is None or n < 0: |
| 947 | buf = self._readbuffer[self._offset:] |
| 948 | self._readbuffer = b'' |
| 949 | self._offset = 0 |
| 950 | while not self._eof: |
| 951 | buf += self._read1(self.MAX_N) |
| 952 | return buf |
| 953 | |
| 954 | end = n + self._offset |
| 955 | if end < len(self._readbuffer): |
| 956 | buf = self._readbuffer[self._offset:end] |
| 957 | self._offset = end |
| 958 | return buf |
| 959 | |
| 960 | n = end - len(self._readbuffer) |
| 961 | buf = self._readbuffer[self._offset:] |
| 962 | self._readbuffer = b'' |
| 963 | self._offset = 0 |
| 964 | while n > 0 and not self._eof: |
| 965 | data = self._read1(n) |
| 966 | if n < len(data): |
| 967 | self._readbuffer = data |
| 968 | self._offset = n |
| 969 | buf += data[:n] |
| 970 | break |
| 971 | buf += data |
| 972 | n -= len(data) |
| 973 | return buf |
| 974 | |
| 975 | def _update_crc(self, newdata): |
| 976 | # Update the CRC using the given data. |