I have a script I am using to save out layers automatically and would like some help with understanding where my files are being saved out to.

In my current code, the file that I am processing is being picked up in the arcpy.env.workspace.

But the layers that I am saving out are being saved in the same place. How do change where the files are being saved ?

import arcpy
from arcpy import env

#Variables which need to pick for this are the attribute that you are going to   filter the layers on

# This is where the file is being picked up from 
arcpy.env.workspace = "U:\\Script\\layers_Files\\"
# The file to be processed 
Source_File = "feilds_template.shp"

Company_Bulk_Company_List = [row[0] for row in arcpy.da.SearchCursor   (Source_File,"HC_TYPE")]
UniqueCompany = set(Company_Bulk_Company_List)
print UniqueCompany

 # Getting the list out 
 for company_query in UniqueCompany:

 #env.workspace = "S:\\AppsData\\GIS\\PROJECT\\COMPANIES\\SHAPEFILES\\"

    out_layer0 = str(company_query)+"lyr"
    in_layer = out_layer0
    out_layer = in_layer +"lyr"

 #MakeFeatureLayer variables
    in_features = "IHS_FEILDS_AREAS.shp"

    where_clause = '"HC_TYPE" = ' + "'" + company_query + "'"
    print where_clause
    workspace = " U:\\Script\\layers_Files\\"

    # Execute MakeFeatureLayer
        arcpy.MakeFeatureLayer_management(in_features, out_layer0, where_clause, workspace)

    # Execute SaveToLayerFile
         arcpy.SaveToLayerFile_management(in_layer, out_layer, "ABSOLUTE")
        print arcpy.GetMessages()
  • 1
    My noob guess is workspace = " U:\\Script\\layers_Files\\", before your try statement. I don't use Arc but your first algorithm "Execute MakeFeatureLayer" looks like it's outputting the results in the workspace location. This is just a guess =) – Joseph Apr 24 '15 at 9:59
  • I have tried changing the above the try statement , but little saves out the files in the arcpy.env.workspace , where the file is picked up – Jack Walker Apr 24 '15 at 10:06
  • Hopefully others can help advise you on this issue :) – Joseph Apr 24 '15 at 10:11

You need to change the value of out_layer to include the output path. Add import os to the start of your script and then set the out_layer variable as follows:

out_layer = os.path.join("your/output/path/here", in_layer + "lyr")
  • This does save out the first layer into the folder. But it is only saving 1 layer . Previously it would save all layers automatically – Jack Walker Apr 24 '15 at 11:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.