Applying Symbology From Layer to Include Label Properties, Feature Scale Range, etc
Seems you've already got .lyr files with the desired properties set that you're loading from. Instead of applying symbology from these, why not add them as layers, replacing previous ones, then swap-out their data sources? I know that this will maintain symbology and label properties, at least, and I hope it also maintains things like visibility toggle and transparency, among others.
import arcpy, os mxd = arcpy.mapping.MapDocument(mxdPath) # Below we assume only one dataframe. Cycle through the returned # list rather than go directly to index zero if that's not the case. df = arcpy.mapping.ListDataFrames(mxd) # Loop through existing layers to make replacements for them. for lyr in arcpy.mapping.ListLayers(mxd): # Get name and data source of existing layer. lyrName = lyr.name aDataSource = lyr.dataSource # Below, replace the .lyr filename reference using whatever # layer-filename matching makes sense in your data; maybe # matching on strings? newLyr = arcpy.mapping.Layer(os.path.join(directoryString, "somelayer.lyr")) # Swap-in the data source of the pre-existing layer. # Note you need to know what kind of workspace you're in for # the second parameter, such as a directory with shapefiles, # or a File Geodatabase. Below is a non-rigorous check for # these two possibilities, but there are several others. srcDir, srcName = os.path.split(aDataSource) workSpaceType = "SHAPEFILE_WORKSPACE" if ".gdb" in srcDir: workSpaceType = "FILEGDB_WORKSPACE" newLyr.replaceDataSource(srcDir, workSpaceType, srcName) # Remove the previous layer, rename the replacement, and replace. arcpy.mapping.RemoveLayer(df, lyr) newLyr.name = lyrName arcpy.mapping.AddLayer(df, newLyr)
You can use a Describe object to get various properties other than their data sources from the pre-existing layers to apply to their replacements, in case you want to carry them over to the new, added layer: http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-functions/describe.htm
More documentation on layer manipulation in general here, including the various kinds of layer data source workspaces and strings for each: http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-mapping/layer-class.htm