Describe (arcpy)

Summary

The Describe function returns a Describe object, with multiple properties, such as data type, fields, indexes, and many others. Its properties are dynamic, meaning that depending on what data type is described, different describe properties will be available for use.

Describe properties are organized into a series of property groups. Any particular dataset will acquire the properties of at least one of these groups. For instance, if describing a geodatabase feature class, you could access properties from the GDB FeatureClass, FeatureClass, Table, and Dataset property groups. All data, regardless of the data type, will always acquire the generic Describe Object properties.

Discussion

Many data types include properties from other property groups. For instance, if describing a geodatabase feature class, you could access properties from the GDB FeatureClass, FeatureClass, Table, and Dataset property groups.

NoteNote:

In some cases the object returned by Describe will not have all of the properties that are documented for it. For example, the describe object for a Layer in ArcMap's table of contents will not have the layer property set. That property only exists if you describe a .lyr file.

If you try to access a property that a Describe object does not have, it will either throw an error or return an empty value (None, 0 or -1, or empty string). If you are uncertain of a particular property, you can use Python's hasattr() function to check.

Syntax

Describe (value)
ParameterExplanationData Type
value

The specified data element or geoprocessing object to describe.

String
Return Value
Data TypeExplanation
Describe

Returns an object with properties detailing the data element described. Some of the returned object's properties will contain literal values or objects.

Code Sample

Describe properties example (stand-alone script)

The following stand-alone script displays some layer and describe object properties from a layer set by a script parameter. The parameter may get set to either a .lyr file or to a layer in ArcMap.

import arcpy

# Get the layer as a parameter and describe it.
#
# The layer could be a layer in ArcMap (like "some_layer")
# Or, it could be a .lyr file (like "C:/data/some.lyr")
#
layerString = arcpy.GetParameterAsText(0)
desc = arcpy.Describe(layerString)

# Print selected layer and describe object properties
# 
print "Name:", desc.name
if hasattr(desc, "layer"):
    print "Layer name:", desc.layer.name
    print "Layer data source:", desc.layer.catalogPath
    print ".lyr file:", desc.catalogPath
else:
    print "Layer name:", desc.name
    print "Layer data source:", desc.catalogPath

if desc.fidSet != '':
    print "Number of selected features:", str(len(desc.fidSet.split(";")))
6/21/2013