2016-01-20 88 views
1

我遇到循環內循環的問題。 我希望每個要素類(FC)的腳本都應該循環遍歷「清單」,並在匹配的位置運行函數findfield。 目前該腳本似乎適用於第一個要素類,遍歷覈對清單,但它只是列出了其餘的要素類而沒有檢查清單..任何想法?建議使用csv和函數構造循環

預先感謝您

# Import system modules 
import arcpy 
import os 
import traceback 
from arcpy import env 
import csv 
import sys 

#Workspace 
arcpy.env.workspace = "SchemaOnly.gdb" 

usecsv = open(r'C:\Temp\GV\Final working\Domain and length out.csv','r') #open file 
checklist = csv.reader(usecsv) #init csv reader 

# function to change schema of featureclass 
def FindField(fc,myField): 
    fieldList = arcpy.ListFields(fc) 

    for field in fieldList: 
     if str.lower(str(field.name)) == str.lower(myField): 
      arcpy.AlterField_management(fc, myField, "", "", "text", new_length, "", "") 
      print " " + fc + " contains fieldname: " + myField 



#Search Feature Datasets 
for fds in arcpy.ListDatasets('','feature'): 
    print "Searching FeatureDataset: " + fds 

    for fc in arcpy.ListFeatureClasses('','',fds): 
     print " Searching Featureclass... " + fc 
     for row in checklist: 
      #print row[0] #prints fieldname 
      #print row[1] #prints newlength 
      myField = row[0] 
      new_length=row[1] 
      FindField(fc,myField) 

回答

0

行,所以我設法找出自己的定位。這個問題似乎是當我想通過清單迭代時,它在嵌套循環中工作了一次,但不是再次。 解決方案是將清單追加到新列表(fieldInfo)中,然後遍歷該列表。下面的代碼更改

checklist = csv.reader(usecsv) #init csv reader 
fieldInfo = [] 
for row in checklist: 
    fieldInfo.append([row[0],row[1]])