I made the attached script here into a tool (ArcMap 10.4). When running it the append2Zip() function starting on line 50 appends the txt file to a zipfile as it should, but doesn't overwrite the old one. I run this tool weekly. The other two blocks run as they should (i.e. output overwrites old files). The first block is lines 9-32. The second is 34-48. And the one I'm concerned with is lines 50-60.
Can anyone catch why the append2Zip function isn't overwriting?
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> os
<SPAN class="keyword token">import</SPAN> zipfile
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">from</SPAN> os <SPAN class="keyword token">import</SPAN> path <SPAN class="keyword token">as</SPAN> P
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
<SPAN class="comment token">#Variables for first block of code</SPAN>
ws <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'\\gisfile\GISstaff\Jared\Python Scripts\Data'</SPAN>
mxd <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>MapDocument<SPAN class="punctuation token">(</SPAN>r<SPAN class="string token">'\\gisfile\GISstaff\Jared\Python Scripts\Data\Data_Request.mxd'</SPAN><SPAN class="punctuation token">)</SPAN>
addy <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>Layer<SPAN class="punctuation token">(</SPAN>r<SPAN class="string token">"Database Connections\ims to plainfield.sde\gisedit.DBO.MGU_Will\gisedit.DBO.Address_Points"</SPAN><SPAN class="punctuation token">)</SPAN>
street <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>Layer<SPAN class="punctuation token">(</SPAN>r<SPAN class="string token">"Database Connections\ims to plainfield.sde\gisedit.DBO.MGU_Will\gisedit.DBO.Street"</SPAN><SPAN class="punctuation token">)</SPAN>
outFeature1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"WillCounty_AddressPoints"</SPAN>
outFeature2 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"WillCounty_Streets"</SPAN>
<SPAN class="comment token"># reference dataframe, then remove/add layers in MXD, then save in Data folder</SPAN>
<SPAN class="keyword token">for</SPAN> df <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListDataFrames<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> lyr <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayers<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"gisedit.DBO.Address_Points"</SPAN><SPAN class="punctuation token">,</SPAN> df<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>RemoveLayer<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">,</SPAN> lyr<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># removes old Adress_Points file from MXD.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"removed: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>lyr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>AddLayer<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">,</SPAN> addy<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"TOP"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># adds new Adress_Points file to MXD fresh from SDE.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"added: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>addy<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToFeatureClass_conversion<SPAN class="punctuation token">(</SPAN>addy<SPAN class="punctuation token">,</SPAN> ws<SPAN class="punctuation token">,</SPAN> outFeature1<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># converts feature to shapefile and saves in data folder.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"saved in data folder: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>outFeature1<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> lyr <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>ListLayers<SPAN class="punctuation token">(</SPAN>mxd<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"gisedit.DBO.Street"</SPAN><SPAN class="punctuation token">,</SPAN> df<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>RemoveLayer<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">,</SPAN> lyr<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># removes old Streets file from MXD.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"removed: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>lyr<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>mapping<SPAN class="punctuation token">.</SPAN>AddLayer<SPAN class="punctuation token">(</SPAN>df<SPAN class="punctuation token">,</SPAN> street<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"TOP"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># adds new Streets file to MXD fresh from SDE.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"added: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>street<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToFeatureClass_conversion<SPAN class="punctuation token">(</SPAN>street<SPAN class="punctuation token">,</SPAN> ws<SPAN class="punctuation token">,</SPAN> outFeature2<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># converts feature to shapefile and saves in data folder.</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">"saved in data folder: {}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>outFeature2<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">ZipShapes</SPAN><SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">,</SPAN> out_path<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> path
shapes <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#iterate through list of shapefiles</SPAN>
<SPAN class="keyword token">for</SPAN> shapes <SPAN class="keyword token">in</SPAN> shapes<SPAN class="punctuation token">:</SPAN>
name <SPAN class="operator token">=</SPAN> p<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>shapes<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
zip_path <SPAN class="operator token">=</SPAN> p<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>out_path<SPAN class="punctuation token">,</SPAN> name <SPAN class="operator token">+</SPAN> <SPAN class="string token">'.zip'</SPAN><SPAN class="punctuation token">)</SPAN>
zip <SPAN class="operator token">=</SPAN> zipfile<SPAN class="punctuation token">.</SPAN>ZipFile<SPAN class="punctuation token">(</SPAN>zip_path<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'w'</SPAN><SPAN class="punctuation token">,</SPAN> compression<SPAN class="operator token">=</SPAN>zipfile<SPAN class="punctuation token">.</SPAN>ZIP_DEFLATED<SPAN class="punctuation token">)</SPAN>
zip<SPAN class="punctuation token">.</SPAN>write<SPAN class="punctuation token">(</SPAN>p<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">,</SPAN>shapes<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> shapes<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> f <SPAN class="keyword token">in</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFiles<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'%s*'</SPAN> <SPAN class="operator token">%</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> f<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.shp'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
zip<SPAN class="punctuation token">.</SPAN>write<SPAN class="punctuation token">(</SPAN>p<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">,</SPAN>f<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN>f<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">'All files written to %s'</SPAN> <SPAN class="operator token">%</SPAN>zip_path
zip<SPAN class="punctuation token">.</SPAN>close<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">append2Zip</SPAN><SPAN class="punctuation token">(</SPAN>zipfolder<SPAN class="punctuation token">,</SPAN> path<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># function that appends disclaimer to both zipfiles in website data folder. </SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="string token">'Appending to '</SPAN> <SPAN class="operator token">+</SPAN> zipfolder
zf <SPAN class="operator token">=</SPAN> zipfile<SPAN class="punctuation token">.</SPAN>ZipFile<SPAN class="punctuation token">(</SPAN>zipfolder<SPAN class="punctuation token">,</SPAN> mode<SPAN class="operator token">=</SPAN> <SPAN class="string token">'a'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
zf<SPAN class="punctuation token">.</SPAN>write<SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">,</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>path<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">finally</SPAN><SPAN class="punctuation token">:</SPAN>
zf<SPAN class="punctuation token">.</SPAN>close<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
path <SPAN class="operator token">=</SPAN> r<SPAN class="string token">'\\gisfile\GISstaff\Jared\Python Scripts\Data\Disclaimer - Final.txt'</SPAN>
zipfolders <SPAN class="operator token">=</SPAN> <SPAN class="punctuation token">[</SPAN>r<SPAN class="string token">'Z:\Data\WillCounty_AddressPoints.zip'</SPAN><SPAN class="punctuation token">,</SPAN> r<SPAN class="string token">'Z:\Data\WillCounty_Streets.zip'</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token">#list of zip folders</SPAN>
<SPAN class="keyword token">for</SPAN> zipfolder <SPAN class="keyword token">in</SPAN> zipfolders<SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># loop through zipfolders</SPAN>
append2Zip<SPAN class="punctuation token">(</SPAN>zipfolder<SPAN class="punctuation token">,</SPAN> path<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#call function above</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>