| 935 | return self.read(size) |
| 936 | |
| 937 | def write(self, b): |
| 938 | if isinstance(b, str): |
| 939 | raise TypeError("can't write str to binary stream") |
| 940 | with memoryview(b) as view: |
| 941 | if self.closed: |
| 942 | raise ValueError("write to closed file") |
| 943 | |
| 944 | n = view.nbytes # Size of any bytes-like object |
| 945 | if n == 0: |
| 946 | return 0 |
| 947 | |
| 948 | pos = self._pos |
| 949 | if pos > len(self._buffer): |
| 950 | # Pad buffer to pos with null bytes. |
| 951 | self._buffer.resize(pos) |
| 952 | self._buffer[pos:pos + n] = view |
| 953 | self._pos += n |
| 954 | return n |
| 955 | |
| 956 | def seek(self, pos, whence=0): |
| 957 | if self.closed: |