I'm working on 24 MXD files. Several maps include "roads" layer in them, the other maps don't have this layer. I'm trying to add "roads" layer to all the maps that do not have this layer by using this code:
import arcpy,os,sys,fnmatch from arcpy import env env.workspace = r"G:\desktop\Project" insertLayer = arcpy.mapping.Layer(r"G:\desktop\Project\layers\roads.lyr") counter = 0 for mxdname in arcpy.ListFiles("*.mxd"): print mxdname mxd = arcpy.mapping.MapDocument(r"G:\desktop\Project\\" + mxdname) df = arcpy.mapping.ListDataFrames(mxd, "Layers") refLayer = arcpy.mapping.ListLayers(mxd, "residence", df) for lyr in arcpy.mapping.ListLayers(mxd, "" ,df): if 'roads' not in lyr: arcpy.mapping.InsertLayer(df, refLayer, insertLayer, "BEFORE") # BEFORE\ AFTER mxd.save() counter = counter + 1 del mxd print counter
and this is the error i get:
>>> landUse.mxd Traceback (most recent call last): File "G:/desktop/y/yaron/shonot/software/---gis---/tools/YARON_SCRIPTS/aaaaaaaaaaaaaaaaa.py", line 18, in <module> if 'roads' not in lyr: File "C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\arcobjects\mixins.py", line 361, in __iter__ self.layers AttributeError: LayerObject: Get attribute layers does not exist >>>
I added this code line:
if 'roads' not in lyr.name:
and now 'roads' layer has been added several times (each map) to all maps no matter if they contain 'roads' layer or not.