'Extract a member from the archive as a file object. `member\' may be
a filename or a TarInfo object. If `member\' is a regular file, a
file-like object is returned. If `member\' is a link, a file-like
object is constructed from the link\'s target. If `member\' is none of
the above, None is returned.
The file-like object is read-only and provides the following
methods: read(), readline(), readlines(), seek() and tell()'

def extractfile(self, member):

    self._check('r')
    if isinstance(member, basestring):
        tarinfo = self.getmember(member)
    else:
        tarinfo = member
    if tarinfo.isreg():
        return self.fileobject(self, tarinfo)
    else:
        if (tarinfo.type not in SUPPORTED_TYPES):
            return self.fileobject(self, tarinfo)
        if (tarinfo.islnk() or tarinfo.issym()):
            if isinstance(self.fileobj, _Stream):
                raise StreamError('cannot    extract    (sym)link    as    file    object')
            else:
                return self.extractfile(self._find_link_target(tarinfo))
        else:
            return None
        return None
