Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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? Major arcpy noob here so I apologize in advance if the answer is obvious. Thanks in advance--

share|improve this question
add comment

1 Answer 1

up vote 6 down vote accepted

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
share|improve this answer
    
excellent. I was looking at the wildcard parameter but wasn't quite sure as to how to use it properly. many thanks! –  myClone Dec 16 '12 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 Dec 16 '12 at 3:14
    
Are you sure they have aliases? –  blah238 Dec 16 '12 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 Dec 16 '12 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 Dec 16 '12 at 3:42
show 2 more comments

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.