import zipfile, sys, os, glob # Set the folder that contains the ShapeFiles myFolder = "C:/Scratch/FWS/" def zipShapefile(myFolder): # Check if folder exists if not (os.path.exists(myFolder)): print myFolder + ' Does Not Exist!' return False # Get a list of shapefiles ListOfShapeFiles = glob.glob(myFolder + '*.shp') # Main shapefile loop for sf in ListOfShapeFiles: print 'Zipping ' + sf # Create an output zip file name from shapefile newZipFN = sf[:-3] + 'zip' # Check if output zipfile exists, delete it if (os.path.exists(newZipFN)): print 'Deleting '+newZipFN os.remove(newZipFN) if (os.path.exists(newZipFN)): print 'Unable to Delete' + newZipFN return False # Create zip file object zipobj = zipfile.ZipFile(newZipFN,'w') # Cycle through all associated files for shapefile adding them to zip file for infile in glob.glob( sf.lower().replace(".shp",".*")): print 'zipping ' + infile + ' into ' + newZipFN if infile.lower() != newZipFN.lower() : # Avoid zipping the zip file! zipobj.write(infile,os.path.basename(infile),zipfile.ZIP_DEFLATED) # Close zipfile print 'ShapeFile zipped!' zipobj.close() # Got here so everything is OK return True # Call function to zip files b = zipShapefile(myFolder) if b: print "Zipping done!" else: print "An error occurred during zipping."
import zipfile, sys, os, glob def zipShapefilesInDir(inDir, outDir): # Check that input directory exists if not os.path.exists(inDir): print "Input directory %s does not exist!" % inDir return False # Check that output directory exists if not os.path.exists(outDir): # Create it if it does not print "Creating output directory %s" %outDir os.mkdir(outDir) print "Zipping shapefile(s) in folder %s to output folder %s" % (inDir, outDir) # Loop through shapefiles in input directory for inShp in glob.glob(os.path.join(inDir, "*.shp")): # Build the filename of the output zip file outZip = os.path.join(outDir, os.path.splitext(os.path.basename(inShp))[0] + ".zip") # Zip the shapefile zipShapefile(inShp, outZip) return True def zipShapefile(inShapefile, newZipFN): print 'Starting to Zip '+(inShapefile)+' to '+(newZipFN) # Check that input shapefile exists if not (os.path.exists(inShapefile)): print inShapefile + ' Does Not Exist' return False # Delete output zipfile if it already exists if (os.path.exists(newZipFN)): print 'Deleting '+newZipFN os.remove(newZipFN) # Output zipfile still exists, exit if (os.path.exists(newZipFN)): print 'Unable to Delete'+newZipFN return False # Open zip file object zipobj = zipfile.ZipFile(newZipFN,'w') # Loop through shapefile components for infile in glob.glob( inShapefile.lower().replace(".shp",".*")): # Skip .zip file extension if os.path.splitext(infile)[1].lower() != ".zip": print "Zipping %s" % (infile) # Zip the shapefile component zipobj.write(infile,os.path.basename(infile),zipfile.ZIP_DEFLATED) # Close the zip file object zipobj.close() return True # Main method, used when this script is the calling module, otherwise # you can import this module and call your functions from other modules if __name__=="__main__": ## testShapeFile = r"C:\temp\geomTest.shp" ## testZipFile = r"C:\temp\geomTest.zip" ## zipShapefile(testShapeFile,testZipFile) inDir = r"c:\temp" outDir = r"c:\temp\testZipShp" zipShapefilesInDir(inDir, outDir) print "done!"
Thank you both for your help they work great!
I hope by now you've found your answer, but if not, or someone else needs to know:
Go to 'Geoprocessing' up on the main menu (File, Edit, View, Bookmarks...) bar, when it drops down, go to 'python' and click on it... here is where you will paste your code...
I should have held off another 10 months - marked the 10 year anniversary of this post. It worked!!! Just changed the print statements into
fav_fruit = 'cantalope' print('my favorite fruit is {}'.format(fav_fruit))<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN></SPAN>
And good to go --> Python 3.6
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.