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

How do I check if my search cursor is empty in arcpy?

我正在使用 arcpy 为 ArcMap 编写一个工具箱。出于参数验证的目的,我想使用 arcpy.da.SearchCursor() 检查查询 returns 是否匹配。我试过这两种方法:

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

if not cursor:
   #Do something.

if cursor == None:
   #Do something.

在这两种情况下,即使游标不包含任何行,if 语句中的代码也永远不会执行。 documentation 没有提到像 .count().empty() 这样的方法。那么如何才能做到呢?

以下应该通过计算游标返回的行数来工作:

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" 语法,因为您的光标对象将被自动删除。

TomAdair 的回答很好,但为了完整起见,我认为我应该添加这个细微的变化。当我对总数不感兴趣而只是它大于零时,它避免了遍历整个搜索游标。

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