I want to use arcpy/python to print out a list of all the field name aliases for a specified shapefile. So far I have been able to hack a script I found to list all the field name aliases associated with every layer file on my map, but I wish for it to reference one specific shapefile. Here's what I have so far:
Code:
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
for lyr in arcpy.mapping.ListLayers(mxd):
desc = arcpy.Describe(lyr)
print lyr.name
fields = desc.fields
for field in fields:
print field.aliasName
The above returns a list of all field alias names for ALL of the layers in the map. I want to return just a list for ONE shapefile.
How would I go about referencing just one shapefile/layer in a map document?
1 Answer 1
Instead of iterating over the whole list returned by ListLayers
, pass in the wildcard parameter using your layer name and just process the first item, e.g.
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
lyr = arcpy.mapping.ListLayers(mxd, "layer_name")[0]
desc = arcpy.Describe(lyr)
print lyr.name
fields = desc.fields
for field in fields:
print field.aliasName
-
excellent. I was looking at the wildcard parameter but wasn't quite sure as to how to use it properly. many thanks!myClone– myClone2012年12月16日 03:09:49 +00:00Commented Dec 16, 2012 at 3:09
-
Just tried it. It executes perfectly, but it returns a list of the field names--not the alias name of the field. Interesting...myClone– myClone2012年12月16日 03:14:07 +00:00Commented Dec 16, 2012 at 3:14
-
Are you sure they have aliases?blah238– blah2382012年12月16日 03:20:23 +00:00Commented Dec 16, 2012 at 3:20
-
Yes. The reason I know this is because if I run the code as I had originally, it generates all the field name aliases for that layer (the one I want) plus all the other layers that I don't want. I just want to print out the alias names for the specific layer.myClone– myClone2012年12月16日 03:26:34 +00:00Commented Dec 16, 2012 at 3:26
-
Well there is no functional difference between the code you posted and the code I posted except which layer(s) are being processed, so I would check to see that you haven't overlooked something (are there two similarly named layers, for example?).blah238– blah2382012年12月16日 03:42:20 +00:00Commented Dec 16, 2012 at 3:42