[Python-Dev] bug in tarfile module?
Chris Withers
chris at simplistix.co.uk
Thu Aug 23 08:46:04 CEST 2012
Hi All,
This feels like a bug, but just wanted to check here before filing a
report if I've missed something:
buzzkill$ python2.7
Enthought Python Distribution -- www.enthought.com
Version: 7.2-2 (32-bit)
Python 2.7.2 |EPD 7.2-2 (32-bit)| (default, Sep 7 2011, 09:16:50)
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "packages", "demo" or "enthought" for more information.
>>> import tarfile
>>> source = open('/src/Python-2.6.7.tgz', 'rb')
>>> tar = tarfile.open(fileobj=source, mode='r|*')
>>> member = tar.extractfile('Python-2.6.7/Lib/genericpath.py')
>>> data = member.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/tarfile.py",
line 815, in read
buf += self.fileobj.read()
File
"/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/tarfile.py",
line 735, in read
return self.readnormal(size)
File
"/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/tarfile.py",
line 742, in readnormal
self.fileobj.seek(self.offset + self.position)
File
"/Library/Frameworks/Python.framework/Versions/7.2/lib/python2.7/tarfile.py",
line 554, in seek
raise StreamError("seeking backwards is not allowed")
tarfile.StreamError: seeking backwards is not allowed
The key is the "mode='r*|" which I understood to be specifically for
reading blocks from a stream without seeking that would cause problems.
I've reproduced on Py26 and Py27 on Mac OS X, and Py26 on SUSE.
Thoughts?
Chris
--
Simplistix - Content Management, Batch Processing & Python Consulting
- http://www.simplistix.co.uk
More information about the Python-Dev
mailing list