2

I am trying to run a Python script that loops through all fields in my input feature attribute table. I have searched extensively and tried to use arcpy.ListField to work but it seems all people got stuck on the same issue: we cannot get the columns we are trying to loop to work as input field.

Here is my script:

import arcpy
arcpy.env.workspace = "C:\Users\jacobyan\Desktop\JACOB"
fieldList = arcpy.ListFields("BG_SAR1.shp")
try:
 #Call all fields in the list
 for field in fieldList:
 outputname = str(field.name) + ".shp"
 print outputname
 arcpy.ClustersOutliers_stats("BG_SAR1.shp", "field", outputname, "GET_SPATIAL_WEIGHTS_FROM_FILE","EUCLIDEAN_DISTANCE", "ROW", "#", "SpatialWeights.swm","NO_FDR")
except:
 print arcpy.GetMessages()

The result I got is:

FID.shp Executing: ClustersOutliers C:\Users\jacobyan\Desktop\JACOB\BG_SAR1.shp field C:\Users\jacobyan\Desktop\JACOB\FID.shp GET_SPATIAL_WEIGHTS_FROM_FILE EUCLIDEAN_DISTANCE ROW # C:\Users\jacobyan\Desktop\JACOB\SpatialWeights.swm NO_FDR Start Time: Wed Jul 29 14:45:56 2015 Failed to execute. Parameters are not valid. ERROR 000728: Field field does not exist within table Failed to execute (ClustersOutliers). Failed at Wed Jul 29 14:45:56 2015 (Elapsed Time: 0.03 seconds)

I adjust "field" to "field.name" and try to replace it with FieldList[count], but none of those worked.

Here are two related posts I have looked at: Iterating through columns in table using ModelBuilder?

https://geonet.esri.com/thread/56324

PolyGeo
65.5k29 gold badges115 silver badges350 bronze badges
asked Jul 29, 2015 at 18:51
4
  • 2
    try removing the " " around "field". I have not used that tool, but it's likely that you need to pass the name of the field, and not the field object. So try replacing "field" with field.name. Also, in your question, it would be better if you could format the code by adding four spaces to the beginning of each line with code in it. Commented Jul 29, 2015 at 18:57
  • Thanks, Adam! I tried what you suggested before but it produces the error "Invalid field type" Commented Jul 29, 2015 at 19:22
  • 1
    What type of field is it? It needs to be a numeric field, as per the documentation Commented Jul 29, 2015 at 19:26
  • OMG, you got the point! The script worked by changing two lines: 1. fieldList = arcpy.ListFields("BG_SAR1.shp") to fieldList = arcpy.ListFields("BG_SAR1.shp",field_type="Double"); 2. Use field.name as the input field value. Thanks a lot, Adam! Commented Jul 29, 2015 at 19:44

1 Answer 1

2

How you have it now, you're going to run the tool using the FID and SHAPE fields. You need to limit your fields to the ones you actually want to use as input. Also, when you use field as the input in the tool, it's actually the field object. You need to use field.name instead.

import arcpy
#should use two backslashes in file path
arcpy.env.workspace = "C:\\Users\\jacobyan\\Desktop\\JACOB"
fieldList = arcpy.ListFields("BG_SAR1.shp")
for field in fieldList:
 try:
 #this will remove FID and SHAPE
 if not field.required:
 field_name = str(field.name)
 output_name = field_name + ".shp"
 arcpy.ClustersOutliers_stats("BG_SAR1.shp", field_name, output_name, "GET_SPATIAL_WEIGHTS_FROM_FILE","EUCLIDEAN_DISTANCE", "ROW", "#", "SpatialWeights.swm","NO_FDR")
 except:
 print arcpy.GetMessages()

Another way is just to replace:

fieldList = arcpy.ListFields("BG_SAR1.shp")

with:

fieldList = ["YourField1", "YourField2", "YourField3"]

and replace "YourField" with whatever fields you want to use as input.

answered Jul 29, 2015 at 19:45
1
  • Thanks for your incisive comments! You hit the main issues with my old script. Commented Jul 29, 2015 at 19:49

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.