[GIS] ArcPy nested loop problem

arcpyloop

I have a question connected with ArcPy. I was trying to make a nested loop with 2 cursors – 1st with 2 elements and 2nd with 5 elements. The statement should return 10 connections, e.g. 1-1, 1-2, … 2-5.
Here is part of my code:

import arcpy
import os.path

folder = "Z:\WOLGA"    
na="na"    
baza = "testy.mdb"    
dataset = "network_analyst"    
arcpy.env.workspace = os.path.join(folder, na, baza, dataset)    
shapePocz = os.path.join(folder, na, baza, dataset, "dom")

listaPktPocz = arcpy.SearchCursor(shapePocz, "", "", "", "")    
shapeKonc = os.path.join(folder, na, baza, dataset, "punkty_docelowe")    
listaPktKonc = arcpy.SearchCursor(shapeKonc, "", "", "", "")    
shapeKoncName = arcpy.Describe(shapeKonc).shapeFieldName    
shapePoczName = arcpy.Describe(shapePocz).shapeFieldName

for pktPocz in listaPktPocz:
    for pktKonc in listaPktKonc:
        print str(pktPocz.numer) + " - " + str(pktKonc.numer)

For now I got such connections as: 1-1, 1-2, 1-3, 1-4, 1-5 only. The outer loop is not being executed properly.

Best Answer

The problem is definitely the old-type cursor. It often makes some problems with nested loops. I recommend you to use da.SearchCursor. The code should look like this:

with arcpy.da.SearchCursor(shapePocz, ["numer"]) as searchCursOuter:
    for pktPocz in searchCursOuter:
        with arcpy.da.SearchCursor(shapeKonc, ["numer"]) as searchCursInner:
            for pktKonc in searchCursInner:
                print str(pktPocz[0]) + " - " + str(pktKonc[0])

I bet it works.

Related Question