Is negative seek() from EOF of a GzipFile supported on Python 2.5.2 ?
Mark Tolonen
metolone+gmane at gmail.com
Sun Jan 11 14:08:18 EST 2009
"Barak, Ron" <Ron.Barak at lsi.com> wrote in message
news:7F0503CD69378F49BE0DC30661C6CCF602494CBE at enbmail01.lsi.com...
> The source of gzip.py on my system seems to suggest that negative seeks
> are supported:
>
> def seek(self, offset):
> if self.mode == WRITE:
> if offset < self.offset:
> raise IOError('Negative seek in write mode')
> count = offset - self.offset
> for i in range(count // 1024):
> self.write(1024 * '\0')
> self.write((count % 1024) * '\0')
> elif self.mode == READ:
> if offset < self.offset:
> # for negative seek, rewind and do positive seek
> self.rewind()
> count = offset - self.offset
> for i in range(count // 1024):
> self.read(1024)
> self.read(count % 1024)
>
> Could any who're familiar with the inner working of gzip settle this issue
> ?
> Is seek from EOF supported for gzip files ?
Source from 2.6.1. Seek from EOF not supported:
def seek(self, offset, whence=0):
if whence:
if whence == 1:
offset = self.offset + offset
else:
raise ValueError('Seek from end not supported')
if self.mode == WRITE:
if offset < self.offset:
raise IOError('Negative seek in write mode')
count = offset - self.offset
for i in range(count // 1024):
self.write(1024 * '\0')
self.write((count % 1024) * '\0')
elif self.mode == READ:
if offset < self.offset:
# for negative seek, rewind and do positive seek
self.rewind()
count = offset - self.offset
for i in range(count // 1024):
self.read(1024)
self.read(count % 1024)
-Mark
More information about the Python-list
mailing list