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 [11]: f = tf.open('tmp.tar.gz', 'r:gz')
    In [12]: for x in f:
       ....:     print x.name

See:

    http://docs.python.org/lib/module-tarfile.html
    http://docs.python.org/lib/tarfile-objects.html
    http://docs.python.org/lib/tar-examples.html

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:

    http://docs.python.org/lib/typeiter.html

Dave


-- 
Dave Kuhlman
http://www.rexx.com/~dkuhlman
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to