У меня есть цикл, который должен выбирать функции и продолжать цикл до тех пор, пока он не перестанет выбирать новые функции.
arcpy.SelectLayerByLocation_management("antiRivStart","INTERSECT","polygon")
previousselectcount = -1
selectcount = arcpy.GetCount_management("StreamT_StreamO1")
while True:
#selectCount = arcpy.GetCount_management("StreamT_StreamO1")
mylist = []
with arcpy.da.SearchCursor("antiRivStart","ORIG_FID") as mycursor:
for feat in mycursor:
mylist.append(feat[0])
liststring = str(mylist)
queryIn1 = liststring.replace('[','(')
queryIn2 = queryIn1.replace(']',')')
arcpy.SelectLayerByAttribute_management('StreamT_StreamO1',"ADD_TO_SELECTION",'OBJECTID IN '+ queryIn2 )
arcpy.SelectLayerByLocation_management("antiRivStart","INTERSECT","StreamT_StreamO1","","ADD_TO_SELECTION")
previousselectcount = selectcount
selectcount = arcpy.GetCount_management("StreamT_StreamO1")
print str(selectcount), str(previousselectcount)
if selectcount == previousselectcount:
break
По моим подсчетам, как только он начнет печатать номер имени дважды, он должен остановиться, но этого не происходит, он продолжает печатать «15548 15548» снова и снова. Игнорирует ли он разрыв или условие if не выполняется?
Я также пробовал с
while selectcount != previousselectcount:
но это дало мне тот же результат
selectcount
относятся к типуint
? А если нет, то что он печатает, когда вы используетеrepr
вместоstr
? - person Lærne   schedule 20.10.2015