我有来自不同子文件夹的 100 个形状文件。我想检查每个形状文件中的“人口”字段。如果任何形状文件中的“人口”字段是 ["", " ", None] 然后打印这些特定形状文件的名称。
import os
import fnmatch
import arcpy
rootPath = r"C:\Project\layers"
pattern = 'mig*.shp'
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
shp = os.path.join(root, filename)
if arcpy.ListFields(shp, "Population"):
print("{} has Population field".format(shp))
with arcpy.da.SearchCursor(shp, ["Population"]) as rows:
for row in rows:
if row[0] == ["", " ", None]:
print("{} has a empty value".format(shp))
else:
print "OK"
该脚本可以正常工作以查找具有人口字段的形状文件名称。但它无法找到具有空人口字段的形状名称。
我收到“运行时错误”。类型错误:字符串索引必须是整数,而不是 str。
我宁愿将其添加为对您的问题的评论,但我不能。首先,如果您想检查字段是否为空,请更改该行:
if row[0] == ["", " ", None]:
到:
if row[0] in ["", " ", None]:
但这是不应该导致运行时错误的逻辑错误。还请确保最后一行打印“OK”的缩进是正确的。
运行下面的代码,让我们知道运行时错误是否仍然存在。如果是,请提供更多信息(包括错误行):
import os
import fnmatch
import arcpy
rootPath = r"C:\Project\layers"
pattern = 'mig*.shp'
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
shp = os.path.join(root, filename)
if arcpy.ListFields(shp, "Population"):
print("{} has Population field".format(shp))
with arcpy.da.SearchCursor(shp, ["Population"]) as rows:
for row in rows:
if row[0] in ["", " ", None]:
print("{} has a empty value".format(shp))
else:
print "OK"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句