проблема с FeatureClassToGeodatabase_conversion в arcpy, используя .da.Walk

С помощью этого кода я пытаюсь прочитать все файлы в каталоге и во всех его подкаталогах. У меня есть другой список имен файлов, если поиск находит файлы в каталогах, которые находятся в другом списке, я хочу скопировать эти классы объектов в другое место. Когда код попадает в FeatureClasstoGeodatabase, я продолжаю получать сообщение об ошибке, что тип данных входных объектов не поддерживается или не существует. Я не был уверен, нужно ли мне как-то получить путь, а также имя файла, поэтому я создал пару списков, чтобы зафиксировать это отдельно, но я как бы застрял здесь:

import arcpy
import os
workspace = r'F:\SF_HMP - transferred to Ydrive'
output_loc = r'C:\temp\temp.gdb'
mssng_files = r'F:\SF_HMP - transferred to Ydrive\Maps\broken_links_missing_files.txt'
files_to_find = []
layers_list = []
layers_path = []

with open(mssng_files) as filelist:
  for line in filelist:
    files_to_find.append(line.strip())

for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,datatype="FeatureClass"):
  for filename in filenames:
    layers_list.append(filename)
    layers_path.append(os.path.join(dirpath,filename))
  for lyr in layers_list:
    if lyr in files_to_find:
        arcpy.FeatureClassToGeodatabase_conversion(lyr,output_loc)

person kflaw    schedule 28.09.2013    source источник


Ответы (1)


Я понял, что мне нужно указать рабочее пространство для каждого копируемого файла. Я также повторил код для поиска и копирования растров и таблиц:

import arcpy,os, easygui,sys

mssng_files = r'L:\SF_HMP - transferred to Ydrive\Maps\broken_links_missing_files.txt'
wkspc = easygui.enterbox("Enter workspace path:",title='Search for Files')
output_loc = easygui.enterbox("Output location:",title='Copy Files')

with open(mssng_files) as filelist:
  for line in filelist:
    files_to_find.append(line.strip())


for dirpath, dirnames, filenames in arcpy.da.Walk(wkspc,datatype='FeatureClass'):
  for filename in filenames:
        if filename in files_to_find:
            ws_l = os.path.join(dirpath,filename)
            arcpy.env.workspace = ws_l
            arcpy.FeatureClassToGeodatabase_conversion(ws_l,output_loc)

for dirpath, dirnames, filenames in arcpy.da.Walk(wkspc,datatype='RasterDataset'):
  for filename in filenames:
        if filename in files_to_find:
            ws_r = os.path.join(dirpath,filename)
            arcpy.env.workspace = ws_r
            arcpy.RasterToGeodatabase_conversion(ws_r,output_loc)

for dirpath, dirnames, filenames in arcpy.da.Walk(wkspc,datatype='Table'):
  for filename in filenames:
        if filename in files_to_find:
            ws_t = os.path.join(dirpath,filename)
            arcpy.env.workspace = ws_t
            arcpy.TableToGeodatabase_conversion(ws_t,output_loc)
person kflaw    schedule 28.09.2013