如何检查我的搜索光标在arcpy中是否为空?

时间:2015-07-22 09:33:49

标签: python arcgis arcpy

我正在使用arcpy为ArcMap编写工具箱。出于参数验证的目的,我想使用arcpy.da.SearchCursor()检查查询是否返回任何匹配项。我尝试了这两种方法:

cursor = arcpy.da.SearchCursor("Table", "Field", "Field = 'Value'")

if not cursor:
   #Do something.

if cursor == None:
   #Do something.

在这两种情况下,即使游标不包含行,也不会执行if语句中的代码。 documentation未提及.count().empty()等方法。那怎么办呢?

2 个答案:

答案 0 :(得分:1)

以下内容应该通过计算游标返回的行数来实现:

i = 0
with arcpy.da.SearchCursor("your_table", ["your_fields"], "your_query") as cursor:
    for row in cursor:
        i += 1

if i == 0:
    print "No results returned."

注意光标的构造,其中字段列表是第二个参数。此外,首选使用“with-as”语法,因为您的光标对象将被自动删除。

答案 1 :(得分:1)

TomAdair的答案很有效,但为了完整起见,我认为我应该添加这种轻微的变化。它避免循环遍历整个搜索光标,当我对总计数不感兴趣时​​,只是它大于零。

with arcpy.da.SearchCursor("Table", "Field", "Field = 'Value'") as cursor:
   for row in cursor:
      break
   else:
      print "No results returned."