如何检查我的搜索光标在 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."
我正在使用 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."