I am a novice in python programming but I am trying to learn by doing. 

I got stuck with this function a while back and can't seem to find a solution or a workaround. 

I am writing a script that is trying to select all data in an MXD within a 70m distance from a layer and then export that data to a newly created file geodatabase. 
I can´t seem to get this to work, all I get is the error:

    FDO error: -2147024894 [GDB_Items]

    The table was not found. [Output name]

And I somehow manage to get some kind of output, in the form of empty geodatabase tables in the output file geodatabase with the “correct” output names. 

I have a suspicion that the problem lies in the feature layers origins. They reside deep in our file tree (for exampel G:\KONSULTUPPDRAG VMN\SAMRÅD\2012\Uppsala\C 55 Örsundsbro - Kvarnbo\Kartor\Grundkartor\Fastighetskartan.gdb\vo) there is nothing I can do about it unfortunately. 

Here is my code:


    import arcpy, os, re
    from unicodedata import normalize

    Skapa_mapp = (unicode ("C:\\Users\dabr\\Desktop\KMZtest\\", 'UTF-8'))
    Mxd_Natur = arcpy.mapping.MapDocument((unicode ("C:\\Users\\dabr\\Desktop\\KMZ test\\YAYYY_Test1.mxd", 'UTF-8')))
    Vag = "c 801"

    def Select_and_Export (Mxd_Natur, Skapa_mapp, Vag):
        Db = Skapa_mapp +"KMZ\\KMZ_Databas.gdb\\"                        #Define the output DB
   
    for df in arcpy.mapping.ListDataFrames(Mxd_Natur):                  #Find the road from whitch the selection is made with. 
        for lyr in arcpy.mapping.ListLayers(Mxd_Natur, "", df):
            if lyr.name.lower() == unicode (Vag, 'UTF-8'):
                Utgangslager = lyr

    for df in arcpy.mapping.ListDataFrames(Mxd_Natur):                  
        for lyr in arcpy.mapping.ListLayers(Mxd_Natur, "", df):         #Loop trough all the layers in the MXD to make 
                                                                        #a selection and exprt if annything got selected
            Sokvag = lyr.workspacePath                                  #Get the path to the specific layer
            SokvagNamn = lyr.datasetName                                #Get the name of the specific layer
            File_path = Sokvag + "\\" + SokvagNamn                      #Combine to create full path
            print File_path

            if not Sokvag.endswith(".gdb"):                             #layers in mxd can be both from GDB and .shp
                File_path = File_path + ".shp"
            
            Namn = lyr.name.lower()                                     #    
            Namn = re.sub('[ ]', '_', Namn)                             #create a output name bades on the layer name 
            Namn = normalize('NFKD', Namn).encode('ascii', 'ignore')    #in the mxd


            if arcpy.Exists("TEMP"):                                    #if temporary file exis´ts from previous run, remove it
                arcpy.Delete_management("TEMP")
                print "temp removed"


            arcpy.management.MakeFeatureLayer(File_path,"TEMP")         #Recreata a empty templayer
            arcpy.SelectLayerByLocation_management("TEMP", "WITHIN_A_DISTANCE", Utgangslager, "70 Meters", "NEW_SELECTION") #populate the templayer whit selected objekts?
            out = os.path.join(Db, Namn)                                #Create a path to the output location
                                              
            print str(arcpy.GetCount_management("TEMP").getOutput(0))+" Selected from " + Namn      #Show number of selected objekts.
            
            if int(arcpy.GetCount_management("TEMP").getOutput(0)) > 0: #check if anny objects were selected. if not dont export
                try:

                    if "TEMP".endswith(".shp"):                         #test if the temporary layer is based on a shp file?
                        print Namn + " skall shp kopieras"
                        arcpy.CopyFeatures_management("TEMP", out.rstrip(".shp"))        #Coppy selected objekts to FDB
                        print Namn + " shp kopierad"
                    else:
                        print Namn + " skall koppiers"
                        arcpy.CopyFeatures_management("TEMP", out)      #Coppy selected objekts to FDB
                        print Namn + " är kopierad"
                        
                except:
                   print arcpy.GetMessages()

                
            else:
                print lyr.name.lower() + " no objekts were selected"

Does anyone see a solution to my problem or perhaps a workaround? 




Edit: After some tweaking I stumbled upon the problem and solution. I was using a File GDB as an output in the CopyFeatures_management function. I don’t know why but if I changed it to a personal GDB everything went fine. Can anyone explain why?