2013-09-28 110 views
0

使用此代碼,我試圖讀取所有文件的目錄及其所有子目錄。我有另一個文件名列表,如果搜索發現另一個列表中的目錄中的文件,我想將這些要素類複製到另一個位置。當代碼到達FeatureClasstoGeodatabase時,我不斷收到輸入要素數據類型不受支持或不存在的錯誤。我不知道我是否需要爲文件名,所以我創建了幾個名單分別捕捉到某種方式得到的路徑爲好,但我那種堅持在這裏:在arcpy中使用FeatureClassToGeodatabase_conversion時遇到麻煩,使用.da.Walk

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) 

回答

0

我意識到我需要指定要複製的每個文件的工作區。我還重複了代碼以搜索並複製柵格和表格:

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) 
相關問題