| 474 | return True |
| 475 | |
| 476 | def read(self, size=-1): |
| 477 | if self.closed: |
| 478 | raise ValueError("read from closed file") |
| 479 | if size is None: |
| 480 | size = -1 |
| 481 | elif not isinstance(size, int): |
| 482 | raise TypeError('must be int, not ' + type(size).__name__) |
| 483 | result = self._line_buffer |
| 484 | self._line_buffer = '' |
| 485 | if size < 0: |
| 486 | while line := self.shell.readline(): |
| 487 | result += line |
| 488 | else: |
| 489 | while len(result) < size: |
| 490 | line = self.shell.readline() |
| 491 | if not line: break |
| 492 | result += line |
| 493 | self._line_buffer = result[size:] |
| 494 | result = result[:size] |
| 495 | return result |
| 496 | |
| 497 | def readline(self, size=-1): |
| 498 | if self.closed: |