I have a very simple python script that opens an mxd from a folder and then loops through each layer, and finds a ObjectID field and changes the alias name.
#setup
import arcpy
from arcpy import env
#Go into folder where mxd's are
env.workspace = r"D:\Temp\Test_Mxd"
#for each mxd
for mxd in arcpy.ListFiles("*.mxd"):
print "Working on map document: " + mxd
mapdoc = arcpy.mapping.MapDocument("D:\\Temp\\Test_Mxd\\" + mxd)
# for each dataframe
df = arcpy.mapping.ListDataFrames(mapdoc,"Layers")[0]
##layers = arcpy.mapping.ListLayers(mapdoc,"*",df):
layers = arcpy.mapping.ListLayers(mapdoc,"*",df)
# for each layer
for layer in layers:
print "Working on layer: " + layer.name
**fieldList = arcpy.ListFields(layer)**
for field in fieldList:
if field.name == "OBJECTID":
# Set the new alias name
field.aliasName == "IGNORE::OBJECTID"
mapdoc.save()
del mxd
my problem is on the line fieldList = arcpy.ListFields(layer)
, I get a error in the interpreter (pythonwin) which says that the layer does not exist.
Has anyone got any idea on where I am going wrong?
Best Answer
The documentation here says that ListFields takes a String parameter. So I would try with the datasource path, rather than a layer object itself. I.e. something like: