mirror of
https://github.com/python/cpython.git
synced 2025-08-27 12:16:04 +00:00
GzipFile.peek improvements, suggested by Nir Aides.
This commit is contained in:
parent
977c707b42
commit
7b998e9f52
2 changed files with 16 additions and 6 deletions
|
@ -342,16 +342,18 @@ class GzipFile(io.BufferedIOBase):
|
|||
def peek(self, n):
|
||||
if self.mode != READ:
|
||||
import errno
|
||||
raise IOError(errno.EBADF, "read() on write-only GzipFile object")
|
||||
raise IOError(errno.EBADF, "peek() on write-only GzipFile object")
|
||||
|
||||
# Do not return ridiculously small buffers
|
||||
# Do not return ridiculously small buffers, for one common idiom
|
||||
# is to call peek(1) and expect more bytes in return.
|
||||
if n < 100:
|
||||
n = 100
|
||||
if self.extrasize == 0:
|
||||
if self.fileobj is None:
|
||||
return b''
|
||||
try:
|
||||
self._read(max(self.max_read_chunk, n))
|
||||
# 1024 is the same buffering heuristic used in read()
|
||||
self._read(max(n, 1024))
|
||||
except EOFError:
|
||||
pass
|
||||
offset = self.offset - self.extrastart
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue