2014-06-24 2 views
0

SearchCursor 내에서 for 루프를 사용하여 피쳐 클래스의 피쳐를 반복합니다.커서 내에서 루프 반복을 제한하는 방법은 무엇입니까?

import arcpy 

fc = r'C:\path\to\featureclass' 

with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor: 
    for row in cursor: 
     # Do something... 

나는 현재 스크립트의 문제를 해결하고 현재 구성으로, 말, 5보다는 3500을 반복을 제한 할 수있는 방법을 찾을 필요가 있어요. 다음과 같이 나는 for 루프 반복의 수를 제한 할 수있는 가장 기본적인 방법을 알고있다 : 커서 객체를 반복 할 때

numbers = [1,2,3,4,5] 

for i in numbers[0:2] 
    print i 

그러나,이 방법은 작동하지 않습니다. with 문에 래핑 된 커서 객체 내에서 for 루프의 반복 횟수를 제한하는 데 사용할 수있는 방법은 무엇입니까?

+0

그냥 카운터를 사용하십시오. – aIKid

+0

커서에 next() 함수가 있습니까? – RohitJ

+0

@RohitJ'arcpy.da.SearchCursor'는'next()'함수를 필요로하지 않습니다. – Borealis

답변

1

반복 횟수를 제한하는 카운터와 논리 문을 추가하십시오. 예 :

import arcpy 

fc = r'C:\path\to\featureclass' 

count = 1 # Start a counter 

with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor: 
    for row in cursor: 
     # Do something... 
     if count >= 2: 
      print "Processing stopped because iterations >= 2" 
      sys.exit() 

     count += 1 
0

한 가지 가능한 방법 :

for index, row in enumerate(cursor): 
    if index > x: 
    # do something... 
    else: 
    # do something... 
1

당신은 모든 것을 잡아 지능형리스트를 사용하고 만 당신이 필요로하는 처음 다섯 개 행을 걸릴 수 있습니다. 아래의 예를 확인 :

max = 5 #insert max number of iterations here 
with arcpy.da.SearchCursor(fc, ["fieldA", "FieldB", "FieldC"]) as cursor: 
    output = [list(row) for row in cursor][:max] 

각 행은, 따라서 목록() 메소드는 당신이 필요로하는 무엇에 사용할 수있는 2D 목록을 생성하는 데 사용되는 튜플 출력 점을 유념해야한다. 데이터 세트가 3500 개의 행이라도 약간의 시간이 걸릴 것입니다. 이게 도움이 되길 바란다!

관련 문제