Seekable I/O Object¶
pcapkit.corekit.io
contains seekable I/O object
SeekableReader
, which is a customised
implementation to io.BufferedReader
.
- class pcapkit.corekit.io.SeekableReader(raw, buffer_size=8192, buffer_save=False, buffer_path=None, *, stream_closing=True)[source]¶
Bases:
BufferedReader
Seekable buffered reader.
A buffered binary stream providing higher-level access to a readable, non seekable
RawIOBase
raw binary stream. It inheritsBufferedIOBase
.When reading data from this object, a larger amount of data may be requested from the underlying raw stream, and kept in an internal buffer. The buffered data can then be returned directly on subsequent reads.
The constructor creates a
BufferedReader
for the given readableraw
stream andbuffer_size
. Ifbuffer_size
is omitted,DEFAULT_BUFFER_SIZE
is used.- Parameters:
- property raw: RawIOBase¶
The underlying raw stream (a
RawIOBase
instance) thatBufferedIOBase
deals with. This is not part of theBufferedIOBase
API and may not exist on some implementations.
- read(size=-1, /)[source]¶
Read and return
size
bytes, or ifsize
is not given or negative, until EOF or if the read call would block in non-blocking mode.- Return type:
- read1(size=-1, /)[source]¶
Read and return up to
size
bytes with only one call on the raw stream. If at least one byte is buffered, only buffered bytes are returned. Otherwise, one raw stream read call is made.- Return type:
- readinto(b, /)[source]¶
Read bytes into a pre-allocated, writable bytes-like object
b
and return the number of bytes read. For example,b
might be abytearray
.Like
read()
, multiple reads may be issued to the underlying raw stream, unless the latter is interactive.A
BlockingIOError
is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment.- Return type:
- readinto1(b, /)[source]¶
Read bytes into a pre-allocated, writable bytes-like object
b
, using at most one call to the underlying raw stream’sread()
(orreadinto()
) method. Return the number of bytes read.A
BlockingIOError
is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment.- Return type:
- readable()[source]¶
Return
True
if the stream can be read from. IfFalse
,read()
will raiseOSError
.- Return type:
- readline(size=-1, /)[source]¶
Read and return one line from the stream. If
size
is specified, at mostsize
bytes will be read.The line terminator is always
b'\n'
for binary files; for text files, thenewline
argument toopen()
can be used to select the line terminator(s) recognized.- Return type:
- readlines(hint=-1, /)[source]¶
Read and return a list of lines from the stream.
hint
can be specified to control the number of lines read: no more lines will be read if the total size (in bytes/characters) of all lines so far exceedshint
.hint
values of0
or less, as well asNone
, are treated as no hint.Note that it’s already possible to iterate on file objects using
for line in file: ...
without callingfile.readlines()
.
- writeable()[source]¶
Return
True
if the stream supports writing. IfFalse
,write()
andtruncate()
will raiseOSError
.- Return type:
- write(b, /)[source]¶
Write the given bytes-like object,
b
, and return the number of bytes written (always equal to the length ofb
in bytes, since if the write fails anOSError
will be raised). Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons.When in non-blocking mode, a
BlockingIOError
is raised if the data needed to be written to the raw stream but it couldn’t accept all the data without blocking.The caller may release or mutate
b
after this method returns, so the implementation should only accessb
during the method call.- Return type:
- seekable()[source]¶
Return
True
if the stream supports random access. IfFalse
,seek()
,tell()
andtruncate()
will raiseOSError
.- Return type:
- seek(offset, whence=0, /)[source]¶
Change the stream position to the given byte
offset
.offset
is interpreted relative to the position indicated bywhence
. The default value forwhence
isSEEK_SET
. Values forwhence
are: :rtype:int
SEEK_SET
or0
- start of the stream (the default);offset
should be zero or positiveSEEK_CUR
or1
- current stream position;offset
may be negativeSEEK_END
or2
- end of the stream;offset
is usually negative
Return the new absolute position.
- truncate(size=None, /)[source]¶
Resize the stream to the given
size
in bytes (or the current position ifsize
is not specified). The current stream position isn’t changed. This resizing can extend or reduce the current file size. In case of extension, the contents of the new file area depend on the platform (on most systems, additional bytes are zero-filled). The new file size is returned.- Return type:
- close()[source]¶
Flush and close this stream. This method has no effect if the file is already closed. Once the file is closed, any operation on the file (e.g. reading or writing) will raise a
ValueError
.As a convenience, it is allowed to call this method more than once; only the first call, however, will have an effect.
- Return type:
- flush()[source]¶
Flush the write buffers of the stream if applicable. This does nothing for read-only and non-blocking streams.
- Return type:
- peek(size=0)[source]¶
Return bytes from the stream without advancing the position.
At most one single read on the raw stream is done to satisfy the call. The number of bytes returned may be less or more than requested.
- Return type:
- detach()[source]¶
Separate the underlying raw stream from the buffer and return it.
After the raw stream has been detached, the buffer is in an unusable state.
Some buffers, like
BytesIO
, do not have the concept of a single raw stream to return from this method. They raiseUnsupportedOperation
.- Return type: