使用python查找空值表单形状文件属性字段

恩蒂亚·霍克

我有来自不同子文件夹的 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章