2013-09-28 2 views
0

이 코드를 사용하면 디렉토리와 모든 하위 디렉토리의 모든 파일을 읽으려고합니다. 파일 이름 목록이 다른데, 다른 목록에있는 디렉토리에서 파일을 찾으면 해당 기능 클래스를 다른 위치로 복사하려고합니다. 코드가 FeatureClasstoGeodatabase에 도착하면 입력 기능 데이터 유형이 지원되지 않거나 존재하지 않는다는 오류가 계속 발생합니다. 나는 파일 이름이 그래서 따로 캡처 목록의 몇 가지를 만들어 어떻게 든뿐만 아니라 경로를 얻기 위해 필요한 경우 확실하지 않았다, 그러나 나는 가지 여기 붙어있어 :.da.Walk를 사용하여 arcClpy에서 FeatureClassToGeodatabase_conversion에 문제가 발생했습니다.

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)