MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / BufferedRandom

Class BufferedRandom

tools/python-3.11.9-amd64/Lib/_pyio.py:1418–1489  ·  view source on GitHub ↗

A buffered interface to random access streams. The constructor creates a reader and writer for a seekable stream, raw, given in the first argument. If the buffer_size is omitted it defaults to DEFAULT_BUFFER_SIZE.

Source from the content-addressed store, hash-verified

1416
1417
1418class BufferedRandom(BufferedWriter, BufferedReader):
1419
1420 """A buffered interface to random access streams.
1421
1422 The constructor creates a reader and writer for a seekable stream,
1423 raw, given in the first argument. If the buffer_size is omitted it
1424 defaults to DEFAULT_BUFFER_SIZE.
1425 """
1426
1427 def __init__(self, raw, buffer_size=DEFAULT_BUFFER_SIZE):
1428 raw._checkSeekable()
1429 BufferedReader.__init__(self, raw, buffer_size)
1430 BufferedWriter.__init__(self, raw, buffer_size)
1431
1432 def seek(self, pos, whence=0):
1433 if whence not in valid_seek_flags:
1434 raise ValueError("invalid whence value")
1435 self.flush()
1436 if self._read_buf:
1437 # Undo read ahead.
1438 with self._read_lock:
1439 self.raw.seek(self._read_pos - len(self._read_buf), 1)
1440 # First do the raw seek, then empty the read buffer, so that
1441 # if the raw seek fails, we don't lose buffered data forever.
1442 pos = self.raw.seek(pos, whence)
1443 with self._read_lock:
1444 self._reset_read_buf()
1445 if pos < 0:
1446 raise OSError("seek() returned invalid position")
1447 return pos
1448
1449 def tell(self):
1450 if self._write_buf:
1451 return BufferedWriter.tell(self)
1452 else:
1453 return BufferedReader.tell(self)
1454
1455 def truncate(self, pos=None):
1456 if pos is None:
1457 pos = self.tell()
1458 # Use seek to flush the read buffer.
1459 return BufferedWriter.truncate(self, pos)
1460
1461 def read(self, size=None):
1462 if size is None:
1463 size = -1
1464 self.flush()
1465 return BufferedReader.read(self, size)
1466
1467 def readinto(self, b):
1468 self.flush()
1469 return BufferedReader.readinto(self, b)
1470
1471 def peek(self, size=0):
1472 self.flush()
1473 return BufferedReader.peek(self, size)
1474
1475 def read1(self, size=-1):

Callers 1

openFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected