Update: I have managed to solve this issue, with help from Dan, colleagues and friends. I'm going to put the final working code at the bottom of this post, so skip to the end if you want to see the "answer".
I have a large radar dataset which contains the rainfall depth across the UK every 5 minutes. I want to determine the total rainfall depth for each day. As there are hundreds of files, I decided to use arcpy to solve this problem, which to be frank, I have little experience in. So firstly, here is an example the format for the radar filenames:
metoffice-c-band-rain-radar_uk_201805312155_5km-composite.gif
So if I take the two characters that indicate day (here being day 31) and use that to group all filenames on day 31 into a list, I can then call a list for each day as an input to cell statistics. I wrote some code (which you can see below), but python crashes everytime I run the code. If I print (Day1) it shows a list of all filenames that indicate Day 1, as desired, so I think this may be a problem with the Arcpy element. I previously used a for loop, but I decided to manaully type in every day so that it was more explicit. Anyway, here is my code:-
<SPAN class="keyword token">import</SPAN> os<SPAN class="punctuation token">,</SPAN> sys<SPAN class="punctuation token">,</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> collections <SPAN class="keyword token">import</SPAN> defaultdict
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">from</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa <SPAN class="keyword token">import</SPAN> <SPAN class="operator token">*</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>cartographicCoordinateSystem <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"British National Grid"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>outputCoordinateSystem <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"British National Grid"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>extent <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Users\bwj202\OneDrive - University of Exeter\GIS\Leakage\RuralTrunkMains.shp"</SPAN>
<SPAN class="comment token"># Check out the ArcGIS Spatial Analyst extension license</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
dictdata <SPAN class="operator token">=</SPAN> defaultdict<SPAN class="punctuation token">(</SPAN>list<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> filename <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>listdir<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> filename<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.gif'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
day <SPAN class="operator token">=</SPAN> filename<SPAN class="punctuation token">[</SPAN><SPAN class="number token">37</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">39</SPAN><SPAN class="punctuation token">]</SPAN>
dictdata<SPAN class="punctuation token">[</SPAN>day<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>filename<SPAN class="punctuation token">)</SPAN>
Day1 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"01"</SPAN><SPAN class="punctuation token">]</SPAN>
Day2 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"02"</SPAN><SPAN class="punctuation token">]</SPAN>
Day3 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"03"</SPAN><SPAN class="punctuation token">]</SPAN>
Day4 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"04"</SPAN><SPAN class="punctuation token">]</SPAN>
Day5 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"05"</SPAN><SPAN class="punctuation token">]</SPAN>
Day6 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"06"</SPAN><SPAN class="punctuation token">]</SPAN>
Day7 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"07"</SPAN><SPAN class="punctuation token">]</SPAN>
Day8 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"08"</SPAN><SPAN class="punctuation token">]</SPAN>
Day9 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"09"</SPAN><SPAN class="punctuation token">]</SPAN>
Day10 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"10"</SPAN><SPAN class="punctuation token">]</SPAN>
Day11 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"11"</SPAN><SPAN class="punctuation token">]</SPAN>
Day12 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"12"</SPAN><SPAN class="punctuation token">]</SPAN>
Day13 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"13"</SPAN><SPAN class="punctuation token">]</SPAN>
Day14 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"14"</SPAN><SPAN class="punctuation token">]</SPAN>
Day15 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"15"</SPAN><SPAN class="punctuation token">]</SPAN>
Day16 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"16"</SPAN><SPAN class="punctuation token">]</SPAN>
Day17 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"17"</SPAN><SPAN class="punctuation token">]</SPAN>
Day18 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"18"</SPAN><SPAN class="punctuation token">]</SPAN>
Day19 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"19"</SPAN><SPAN class="punctuation token">]</SPAN>
Day20 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"20"</SPAN><SPAN class="punctuation token">]</SPAN>
Day21 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"21"</SPAN><SPAN class="punctuation token">]</SPAN>
Day22 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"22"</SPAN><SPAN class="punctuation token">]</SPAN>
Day23 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"23"</SPAN><SPAN class="punctuation token">]</SPAN>
Day24 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"24"</SPAN><SPAN class="punctuation token">]</SPAN>
Day25 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"25"</SPAN><SPAN class="punctuation token">]</SPAN>
Day26 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"26"</SPAN><SPAN class="punctuation token">]</SPAN>
Day27 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"27"</SPAN><SPAN class="punctuation token">]</SPAN>
Day28 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"28"</SPAN><SPAN class="punctuation token">]</SPAN>
Day29 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"29"</SPAN><SPAN class="punctuation token">]</SPAN>
Day30 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"30"</SPAN><SPAN class="punctuation token">]</SPAN>
Day31 <SPAN class="operator token">=</SPAN> dictdata<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"31"</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>Day1<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#print(Day2)</SPAN>
<SPAN class="comment token">#print(dictdata)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day1<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day1.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day2<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day2.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day3<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day3.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day4<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day4.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day5<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day5.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day6<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day6.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day7<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day7.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day8<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day8.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day9<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day9.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day10<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day10.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day11<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day11.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day12<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day12.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day13<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day13.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day14<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day14.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day15<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day15.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day16<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day16.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day17<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day17.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day18<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day18.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day19<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day19.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day20<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day20.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day21<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day21.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day22<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day22.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day23<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day23.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day24<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day24.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day25<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Save the output </SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day25.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day26<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day26.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day27<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day27.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day28<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day28.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day29<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day29.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day30<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day30.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Execute CellStatistics</SPAN>
outCellStatistics1 <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>Day31<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"NODATA"</SPAN><SPAN class="punctuation token">)</SPAN>
outCellStatistics1<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Day31.tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#exit()</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></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><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></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>
My error message is as follows:
outCellStatistics.save(save)
RuntimeError: ERROR 999998: Unexpected Error.
OK so the main problem was that there were memory issues (which was odd as I was able to run cellstatistics in ArcMap) but I also needed the full path in my output. Some of the other changes are implemented purely for the code to be "cleaner". Here is the code:
<SPAN class="keyword token">import</SPAN> os<SPAN class="punctuation token">,</SPAN> sys<SPAN class="punctuation token">,</SPAN> arcpy
<SPAN class="keyword token">from</SPAN> collections <SPAN class="keyword token">import</SPAN> defaultdict
<SPAN class="keyword token">from</SPAN> arcpy <SPAN class="keyword token">import</SPAN> env
<SPAN class="keyword token">from</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>sa <SPAN class="keyword token">import</SPAN> <SPAN class="operator token">*</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>cartographicCoordinateSystem <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"British National Grid"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>outputCoordinateSystem <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"British National Grid"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>extent <SPAN class="operator token">=</SPAN> r<SPAN class="string token">"C:\Users\bwj202\OneDrive - University of Exeter\GIS\Leakage\RuralTrunkMains.shp"</SPAN>
<SPAN class="comment token"># Check out the ArcGIS Spatial Analyst extension license</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>overwriteOutput <SPAN class="operator token">=</SPAN> <SPAN class="token boolean">True</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CheckOutExtension<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Spatial"</SPAN><SPAN class="punctuation token">)</SPAN>
Data_folder <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/Data"</SPAN>
env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN>Data_folder<SPAN class="punctuation token">)</SPAN>
dictdata <SPAN class="operator token">=</SPAN> defaultdict<SPAN class="punctuation token">(</SPAN>list<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> filename <SPAN class="keyword token">in</SPAN> os<SPAN class="punctuation token">.</SPAN>listdir<SPAN class="punctuation token">(</SPAN>Data_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">if</SPAN> filename<SPAN class="punctuation token">.</SPAN>endswith<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'.gif'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
day <SPAN class="operator token">=</SPAN> filename<SPAN class="punctuation token">[</SPAN><SPAN class="number token">37</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">39</SPAN><SPAN class="punctuation token">]</SPAN>
dictdata<SPAN class="punctuation token">[</SPAN>day<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN>Data_folder <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/"</SPAN> <SPAN class="operator token">+</SPAN> filename<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># print (dictdata)</SPAN>
Export_folder <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/Exports"</SPAN>
<SPAN class="keyword token">if</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>exists<SPAN class="punctuation token">(</SPAN>Export_folder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">pass</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFolder_management<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>getcwd<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"Exports"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Start loop"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> key<SPAN class="punctuation token">,</SPAN> value <SPAN class="keyword token">in</SPAN> dictdata<SPAN class="punctuation token">.</SPAN>iteritems<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
label <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>key<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># print value</SPAN>
outCellStatistics <SPAN class="operator token">=</SPAN> CellStatistics<SPAN class="punctuation token">(</SPAN>value<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"SUM"</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">"DATA"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># Changed NODATA to DATA - I imageine you don't want to write off a cell value if at some point there is no rain?</SPAN>
<SPAN class="comment token"># # Save the output</SPAN>
outCellStatistics<SPAN class="punctuation token">.</SPAN>save<SPAN class="punctuation token">(</SPAN>Export_folder <SPAN class="operator token">+</SPAN> <SPAN class="string token">"/Day"</SPAN> <SPAN class="operator token">+</SPAN> label <SPAN class="operator token">+</SPAN> <SPAN class="string token">".tif"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">"finished"</SPAN><SPAN class="punctuation token">)</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>