Thank you Jeff. Your code references objects "lyr1" and "lyr2" but these are not defined in your script. At first I assumed these would be "fullLyr" and "relLyr", but the function ListLayers doesn't support layer files, it seems to only support map documents. I can get this to work inside a map document, but I was hoping to avoid using an MXD if possible.However, I need to get moving beyond this, so my solution is simply to open a blank mxd, add my layer file, update the source using .findAndReplaceWorkspacePath, then save the top layer of the layers in the MXD. Since I control the creation of the layer file to begin with I know that I can save this top layer and I get the expected result. Then I just delete the temporary mxd file.Thank you all for your help. My final code (which works properly) is posted here, but sadly I did have to resort to using an MXD:import arcpy outFolder = r"C:\Projects\CoreData\GeoName" newFolder = r"\\silver\projects\SpatialData_Core\GeoName" inLayerFile = r"C:\Projects\testmove\test2\GeoName\LayerFiles\AG10\BaseInfo.lyr" outLayerFile = r"\\silver\projects\SpatialData_Core\GeoName\LayerFiles\AG10\BaseInfo_updated.lyr" inMXDFile = r"C:\Projects\CoreData\GeoName\LayerFiles\AG10\BaseInfo.mxd" outMXDFile = r"\\silver\projects\SpatialData_Core\GeoName\LayerFiles\AG10\BaseInfo_updated.mxd" if arcpy.Exists(outMXDFile): arcpy.Delete_management(outMXDFile) if arcpy.Exists(outLayerFile): arcpy.Delete_management(outLayerFile) mxd = arcpy.mapping.MapDocument(inMXDFile) mxd.findAndReplaceWorkspacePaths(outFolder,newFolder, False) mxd.saveACopy(outMXDFile) del mxd mxd = arcpy.mapping.MapDocument(outMXDFile) df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] lyr = arcpy.mapping.ListLayers(mxd, "", df)[0] lyr.saveACopy(outLayerFile) if arcpy.Exists(outMXDFile): arcpy.Delete_management(outMXDFile) print "Finished creating new Layer file: " + outLayerFile