Using the older arcpy.SearchCursor, the next()
method would return Nothing
once the last record had been passed.
Using the newer arcpy.da.SearchCursor, I'm finding that the next() method crashes the script if there are no more records. To illustrate:
import arcpy
fc = "C:\Program Files (x86)\ArcGIS\Desktop10.2\ArcGlobeData\continent.shp"
fields = ["CONTINENT"]
where = "CONTINENT = 'Asia'"
with arcpy.da.SearchCursor(fc, fields, where) as cursor:
for i in range(0,5):
row = cursor.next()
print row
There is only one record in the cursor, so the first time it iterates the name is printed. But the second iteration throws a StopIteration error.
How should we use next()
with arcpy.da.SearchCursor?
Best Answer
I can't see this documented in the Esri help files, so I'm entering it here for posterity.
According to Jason Scheirer from the Esri ArcPy team this is the intended behaviour (original Esri forums post):
The suggested approach is to use a
for
iterator on the cursor, ie without using the next() method at all:In my case I wanted to perform an action when there was no row - I found that a Try, Except block worked well: