Update by Mark Russell -- clarify readinto(), and qualify tell()/seek() on

textio buffers.
This commit is contained in:
Guido van Rossum 2007-04-05 18:25:11 +00:00
parent 0ae6c2020d
commit 799cd54779
1 changed files with 28 additions and 10 deletions

View File

@ -72,11 +72,11 @@ exactly one operating system call.
``.readinto(b: bytes) -> int``
Read up to ``n`` bytes from the object and stores them in
Read up to ``len(b)`` bytes from the object and stores them in
``b``, returning the number of bytes read. Like .read, fewer
than ``n`` bytes may be read, and 0 indicates end of file.
than ``len(b)`` bytes may be read, and 0 indicates end of file.
``None`` is returned if a non-blocking object has no bytes
available.
available. The length of ``b`` is never changed.
``.write(b: bytes) -> int``
@ -100,7 +100,7 @@ Additionally, it defines a few other methods:
``.writable() -> bool``
Returns ``True`` if the object was opened write writing,
Returns ``True`` if the object was opened for writing,
``False`` otherwise. If ``False``, ``.write()`` and
``.truncate()`` will raise an ``IOError`` if called.
@ -277,15 +277,33 @@ per-character basis instead of a per-byte basis. These methods are:
``.write(s: str) -> None``
``.tell() -> object``
Return a cookie describing the current file position.
The only supported use for the cookie is with .seek()
with whence set to 0 (i.e. absolute seek).
``.seek(pos: object, whence: int = 0) -> None``
Seek to position ``pos``. If ``pos`` is non-zero, it must
be a cookie returned from ``.tell()`` and ``whence`` must be zero.
``.truncate(pos: object = None) -> None``
Like ``BufferedIOBase.truncate()``, except that ``pos`` (if
not ``None``) must be a cookie previously returned by ``.tell()``.
Unlike with raw I/O, the units for .seek() are not specified - some
implementations (e.g. ``StringIO``) use characters and others
(e.g. ``TextIOWrapper``) use bytes. The special case for zero is to
allow going to the start or end of a stream without a prior
``.tell()``. An implementation could include stream encoder state in
the cookie returned from ``.tell()``.
``TextIOBase`` implementations also provide several methods that are
pass-throughs to the underlaying ``BufferedIOBase`` objects:
``.seek(pos: int, whence: int = 0) -> None``
``.tell() -> int``
``.truncate(pos: int = None) -> None``
``.flush() -> None``
``.close() -> None``