def extract(self, member, path="<STR_LIT>", set_attrs=True):
self._check("<STR_LIT:r>")<EOL>if isinstance(member, str):<EOL><INDENT>tarinfo = self.getmember(member)<EOL><DEDENT>else:<EOL><INDENT>tarinfo = member<EOL><DEDENT>if tarinfo.islnk():<EOL><INDENT>tarinfo._link_target = os.path.join(path, tarinfo.linkname)<EOL><DEDENT>try:<EOL><INDENT>self._extract_member(tarinfo, os.path.join(path, tarinfo.name),<EOL>set_attrs=set_attrs)<EOL><DEDENT>except EnvironmentError as e:<EOL><INDENT>if self.errorlevel > <NUM_LIT:0>:<EOL><INDENT>raise<EOL><DEDENT>else:<EOL><INDENT>if e.filename is None:<EOL><INDENT>self._dbg(<NUM_LIT:1>, "<STR_LIT>" % e.strerror)<EOL><DEDENT>else:<EOL><INDENT>self._dbg(<NUM_LIT:1>, "<STR_LIT>" % (e.strerror, e.filename))<EOL><DEDENT><DEDENT><DEDENT>except ExtractError as e:<EOL><INDENT>if self.errorlevel > <NUM_LIT:1>:<EOL><INDENT>raise<EOL><DEDENT>else:<EOL><INDENT>self._dbg(<NUM_LIT:1>, "<STR_LIT>" % e)<EOL><DEDENT><DEDENT>
Extract a member from the archive to the current working directory,
           using its full name. Its file information is extracted as accurately
           as possible. `member' may be a filename or a TarInfo object. You can
           specify a different directory using `path'. File attributes (owner,
           mtime, mode) are set unless `set_attrs' is False.