Trabajo con ArcMap y utilizo ArcPy.
Mi tarea es hacer un bucle a través de MXDs y encontrar fuentes de datos rotas.
Mi código es:
mxd = arcpy.mapping.MapDocument(fullPath)
brknMXD = arcpy.mapping.ListBrokenDataSources(mxd)
for brknItem in brknMXD:
if brknItem.supports("workspacePath"):
try:
source = brknItem.workspacePath
print str(brknItem) + ": " + source
except:
print "unexpected error"
continue
else:
print "Layer does not support source"
Algunos MXD tienen TableViews y ahí es donde se rompe el código.
Traceback (última llamada más reciente): Archivo " P:\Scripts\Find_MXDs_Broken_Sources.py ", línea 5, en if brknItem.supports("workspacePath"): AttributeError: 'TableView' object has no attribute 'supports'
He comprobado dentro de un intérprete de Python MXD para ver qué tipo de objetos son devueltos por arcpy.mapping.ListBrokenDataSources(mxd) y se indica:
>>> for each in brknMXD:
... print type(each)
...
<class 'arcpy._mapping.Layer'>
<class 'arcpy._mapping.Layer'>
<class 'arcpy._mapping.Layer'>
<class 'arcpy._mapping.TableView'>
Está claro que puedo establecer una prueba para distinguir entre estos dos tipos, pero no sé cómo escribirla exactamente.
¿Alguna idea?