Я бы лучше добавил это как комментарий к вашему вопросу, но я не могу. Прежде всего, если вы хотите проверить, является ли поле пустым, измените строку:
if row[0] == ["", " ", None]:
на:
if row[0] in ["", " ", 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] in ["", " ", None]:
print("{} has a empty value".format(shp))
else:
print "OK"