def build_output_directory(self, path):
        '''
        Set the output directory for extracted files.

        @path - The path to the file that data will be extracted from.

        Returns None.
        '''
        # If we have not already created an output directory for this target
        # file, create one now
        if not has_key(self.extraction_directories, path):
            basedir = os.path.dirname(path)
            basename = os.path.basename(path)

            if basedir != self.directory:
                # During recursive extraction, extracted files will be in subdirectories
                # of the CWD. This allows us to figure out the subdirectory by simply
                # splitting the target file's base directory on our known CWD.
                #
                # However, the very *first* file being scanned is not necessarily in the
                # CWD, so this will raise an IndexError. This is easy to handle though,
                # since the very first file being scanned needs to have its contents
                # extracted to ${CWD}/_basename.extracted, so we just set the subdir
                # variable to a blank string when an IndexError is encountered.
                try:
                    subdir = basedir.split(self.directory)[1][1:]
                except IndexError as e:
                    subdir = ""
            else:
                subdir = ""

            if self.output_directory_override:
                output_directory = os.path.join(self.directory, subdir, self.output_directory_override)
            else:
                outdir = os.path.join(self.directory, subdir, '_' + basename)
                output_directory = unique_file_name(outdir, extension='extracted')

            if not os.path.exists(output_directory):
                os.mkdir(output_directory)

            self.extraction_directories[path] = output_directory
            self.output[path].directory = os.path.realpath(output_directory) + os.path.sep
        # Else, just use the already created directory
        else:
            output_directory = self.extraction_directories[path]

        return output_directory
def build_output_directory ( self , path ) : if not has_key ( self . extraction_directories , path ) : basedir = os . path . dirname ( path ) basename = os . path . basename ( path ) if basedir != self . directory : try : subdir = basedir . split ( self . directory ) [ 1 ] [ 1 : ] except IndexError as e : subdir = "" else : subdir = "" if self . output_directory_override : output_directory = os . path . join ( self . directory , subdir , self . output_directory_override ) else : outdir = os . path . join ( self . directory , subdir , '_' + basename ) output_directory = unique_file_name ( outdir , extension = 'extracted' ) if not os . path . exists ( output_directory ) : os . mkdir ( output_directory ) self . extraction_directories [ path ] = output_directory self . output [ path ] . directory = os . path . realpath ( output_directory ) + os . path . sep else : output_directory = self . extraction_directories [ path ] return output_directory
Set the output directory for extracted files.

        @path - The path to the file that data will be extracted from.

        Returns None.