I'm attempting to read a specific field from a Feature Class using the following code (search cursor):
import arcpy import os arcpy.env.workspace = 'C:\Users\jas\Documents\ArcGIS\L_Sr_geodatabase.gdb' #inputFeatures = arcpy.GetParameterAsText(0) inFeatures = 'LF_Stormdrains' fc = os.path.join(arcpy.env.workspace,inFeatures) # check if exist if arcpy.Exists(fc): print "Feature Class Exists" # check name fc_list = arcpy.ListFeatureClasses() for fcname in fc_list: arcpy.AddMessage(fcname) fields = ['ASSET_ID'] if arcpy.Exists(inFeatures): arcpy.AddMessage("Feature Class Exists...") with arcpy.da.SearchCursor(fc, fields) as cursor: try: if cursor.next() != (): cursor.reset() for row in cursor: assetID = row arcpy.AddMessage(assetID) except StopIteration: print('Empty Cursor')
I'm stumped on the RuntimeError: cannot open 'feature class'. Any help would be appreciated!
What exactly are you trying to accomplish with the Search Cursor?
Don't forget to add an 'r' in front of your database path.
#No :( arcpy.env.workspace = 'C:\Users\jas\Documents\ArcGIS\L_Sr_geodatabase.gdb' #Yes :) arcpy.env.workspace = r'C:\Users\jas\Documents\ArcGIS\L_Sr_geodatabase.gdb'
Thanks Mitch, I'll try this. Ultimately I'm trying to do some relational queries between feature classes based on an Asset_ID.
Additionally, Ive noticed that as I change feature classes it will run the first time, then provide the same runtime error when I try and run the script again. Am I not releasing the cursor properly?
Yeah, I've never seen a cursor like that before. Please check this link on SearchCursor. You don't necessarily have to set an arcpy.env.workspace either.
It should look similar to this:
database = r'C:\pathtoDatabase.gdb' fc = database + '/' + 'fc' fields = ['AssetID'] with arcpy.da.SearchCursor(fc, fields) as cursor: for row in cursor: assetID = str(row) arcpy.AddMessage(assedID) del cursor