One of the tasks I’ve been automating is publishing a weekly data update to a website. The update consists of shapefile. The trouble with shapefiles is they consist of 3 or more files with the same basename but different extensions in the same directory.
Not an overly complicated situation but a common one that ArcGIS does not have a solution out-of-the-box. Below is a bare-bones code snippet to do it. It has both the input shapefile and output zip file hard-coded. The call to the subroutine that does the work is: zipShapefile(wellsShapeFile,wellsZipFile)
import zipfile import sys import os import glob wellsShapeFile = "C:/cwi5_bk/WELLS/wells.SHP" wellsZipFile = "C:/cwi5_bk/WELLS/test5.zip" def zipShapefile(inShapefile, newZipFN): print 'Starting to Zip '+inShapefile+' to '+newZipFN if not (os.path.exists(inShapefile)): print inShapefile + ' Does Not Exist' return False if (os.path.exists(newZipFN)): print 'Deleting '+newZipFN os.remove(newZipFN) if (os.path.exists(newZipFN)): print 'Unable to Delete'+newZipFN return False zipobj = zipfile.ZipFile(newZipFN,'w') for infile in glob.glob( inShapefile.lower().replace(".shp",".*")): print infile zipobj.write(infile,os.path.basename(infile),zipfile.ZIP_DEFLATED) zipobj.close() return True zipShapefile(wellsShapeFile,wellsZipFile) print "done!"