2015-04-20 2 views
0

Я пытаюсь скопировать только классы объектов, которые я задал, а не копировал их все с помощью цикла if. Я попробовал ниже, и он выполняется, но не копирует файлы.Копирование классов функций в строке

import arcpy 
import os 

arcpy.env.workspace = r'c:\arcgis\ArcTutor\ModelBuilder\GTKModelbuilder\Data\RFDA Shapefiles' 
outWorkspace = r'C:\Output' 

fcList = arcpy.ListFeatureClasses() 

for shapefile in fcList: 
    if fcList == ('BedfordCalls.shp','ColleyvilleCalls.shp','HurstCalls.shp','KellersCalls.shp'): 
    outFeatureClass = os.path.join(outWorkspace,shapefile.strip(".shp")) 
    arcpy.CopyFeatures_management(shapefile, outFeatureClass) 

ответ

0
import arcpy 
import os 

arcpy.env.workspace = r'c:\Shapefile' 
outWorkspace = r'C:\Output' 

fcList = arcpy.ListFeatureClasses() 

for shapefile in fcList: 
    if'BedfordCalls.shp'or'ColleyvilleCalls.shp'or'HurstCalls.shp'or'KellersCalls.shp' in fcList: 
     outFeatureClass = os.path.join(outWorkspace,shapefile.strip(".shp")) 
     arcpy.CopyFeatures_management(shapefile, outFeatureClass) 
+0

Существует несколько недостатков логики в этом. Для каждого 'shapefile' в' fcList' вы проверите, включено ли какое-либо из нескольких имен файлового файла в 'fcList', а затем скопировано' shapefile'. Поэтому, если ListFeatureClasses возвращает, говорит 15 классов объектов, и любой из них - «BedfordCalls.shp» или один из других, которые вы включили, он будет запускать «CopyFeatures_management» для всех 15 классов объектов. – DWynne

+0

Кроме того, не нужно снимать расширение .shp с шейп-файла. Функции копирования будут добавлять его обратно в любом случае, потому что вы пишете в папку. – DWynne

0

Ниже следует делать то, что вы хотите более эффективно (отмечая комментарии на раннем ответ):

import arcpy 
import os 

arcpy.env.workspace = r'c:\Shapefile' 
outWorkspace = r'C:\Output' 

fcList = ['BedfordCalls.shp', 'ColleyvilleCalls.shp', 'HurstCalls.shp', 'KellersCalls.shp'] 

for shapefile in fcList: 
    outFeatureClass = os.path.join(outWorkspace, shapefile) 
    arcpy.CopyFeatures_management(shapefile, outFeatureClass) 
Смежные вопросы