[Tutor] How to read content in a tar file with tarfile module
dkuhlman at rexx.com
Tue Oct 10 22:52:46 CEST 2006
On Tue, Oct 10, 2006 at 01:19:20PM -0600, Hugo Gonz?lez Monteverde wrote:
> Magnus Wirstr?m wrote:
> > I have written a app that makes a tar file and all works well... Now i
> > want to expand that app so it can read read the tar and give me the
> > contents of the tar file. How is the best way to do this ? I can't find
> > a "listdir" like function in tarfile. Can anyone point me in the right
> > direction?
> Hi, is this what you're looking for?? (tarfile Object docs)
> getmembers( )
> Return the members of the archive as a list of TarInfo objects. The list
> has the same order as the members in the archive.
> getnames( )
> Return the members as a list of their names. It has the same order as
> the list returned by getmembers().
Note also the presence of a "next()" method in TarFile objects.
That (along with an "__iter__" method: see Lib/tarfile.py in the
source) is your clue that each TarFile instance is an iterator. It
iterates over its TarInfo members. So, you can do the following:
In : f = tf.open('tmp.tar.gz', 'r:gz')
In : for x in f:
....: print x.name
Note that the TarFile object implementation of the iterator
protocol is slightly non-standard. next() returns None when
exhausted, whereas the iterator protocol specifies that it should
throw a StopIteration exception. See:
More information about the Tutor