Inconsistencies between zipfile and tarfile APIs
tjreedy at udel.edu
Fri Jul 22 07:45:57 CEST 2011
On 7/22/2011 12:48 AM, rantingrick wrote:
> On Jul 21, 11:13 pm, Corey Richardson<kb1... at aim.com> wrote:
>> Excerpts from rantingrick's message of Thu Jul 21 23:46:05 -0400 2011:
>>> I may have found the mother of all inconsitency warts when comparing
>>> the zipfile and tarfile modules. Not only are the API's different, but
>>> the entry and exits are differnet AND zipfile/tarfile do not behave
>>> like proper file objects should.
>> I agree, actually.
Hmm. Archives are more like directories than files. Windows, at least,
seems to partly treat zipfiles as more or less as such. Certainly, 7zip
present a directory interface. So opening a zipfile/tarfile would be
like opening a directory, which we normally do not do. On the other
hand, I am not sure I like python's interface to directories that much.
It would be more sensible to open files within the archives. Certainly,
it would be nice to have the result act like file objects as much as
Seaching open issues for 'tarfile' or 'zipfile' returns about 40 issues
each. So I think some people would care more about fixing bugs than
adjusting the interfaces. Of course, some of the issues may be about the
interface and increasing consistency where it can be done without
compatibility issues. However, I do not think there are any active
developers focued on those two modules.
> Unfortunately i know what the "powers that be" are going to say about
> fixing this wart.
> PTB: "Sorry we cannot break backwards compatibility"
Do you propose we break compatibility more than we do? You are not the
only Python ranter. People at Google march into Guido's office to
complain instead of posting here.
> Rick: But what about Python 3000?
> PTB: " Oh, well, umm, lets see. Well that was then and this is now!
The changes made for 3.0 were more than enough for some people to
discourage migration to Py3. And we *have* made additional changes
since. So the resistance to incompatible feature changes has increased.
> Maybe i can offer a solution. A NEW module called "archive.py" (could
> even be a package!) which exports both the zip and tar file classes.
> However, unlike the current situation this archive module will be
> consistent with it's API.
>>>> from archive import ZipFile, TarFile
>>>> zf = ZipFile(path, *args)
>>>> tf = TarFile(path, *args)
Not a bad idea. Put it on PyPI and see how much support you can get.
Terry Jan Reedy
More information about the Python-list