#********************************************************************** # Description: # Unzips the contents of a zip file into an existing folder. # Arguments: # 0 - Input zip file # 1 - Input folder - path to existing folder that will contain # the contents of the zip file. #********************************************************************** # Import modules and create the geoprocessor # import sys, zipfile, arcpy, os, traceback from os.path import isdir, join, normpath, split # Function to unzipping the contents of the zip file # def unzip(path, zip): # If the output location does not yet exist, create it # if not isdir(path): os.makedirs(path) for each in zip.namelist(): arcpy.AddMessage("Extracting " + os.path.basename(each) + " ...") # Check to see if the item was written to the zip file with an # archive name that includes a parent directory. If it does, create # the parent folder in the output workspace and then write the file, # otherwise, just write the file to the workspace. # if not each.endswith('/'): root, name = split(each) directory = normpath(join(path, root)) if not isdir(directory): os.makedirs(directory) file(join(directory, name), 'wb').write(zip.read(each)) if __name__ == '__main__': try: # Get the tool parameter values # infile = arcpy.GetParameterAsText(0) outfol = arcpy.GetParameterAsText(1) # Create the zipfile handle for reading and unzip it # zip = zipfile.ZipFile(infile, 'r') unzip(outfol, zip) zip.close() except: # Return any Python specific errors and any error returned by the geoprocessor # tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] pymsg = "PYTHON ERRORS:\nTraceback Info:\n" + tbinfo + "\nError Info:\n " + \ str(sys.exc_type)+ ": " + str(sys.exc_value) + "\n" arcpy.AddError(pymsg) msgs = "GP ERRORS:\n" + arcpy.GetMessages(2) + "\n" arcpy.AddError(msgs)