我在使用Python脚本删除shapefile属性表中的单行时遇到困难。我想要做的是删除任何ID值为0的行。我已经使用所有行的脚本被删除了。例如,我尝试了很多脚本(注意"最终"在这种情况下是我的shapefile)。
fieldsNew = arcpy.ListFields(final)
listID = []
for field in fieldsNew:
header = ("{0}".format(field.name))
string = str(header)
if string.startswith('ID'):
listID .append(string)
for j in listID:
curObjX = arcpy.UpdateCursor(final)
for rowX in curObjX:
rowValue = rowX.getValue(j)
if rowValue != 0:
pass
else:
print rowX
curObjX.deleteRow(rowX)
或
rows = arcpy.UpdateCursor(final)
fields = arcpy.ListFields(final)
for row in rows:
for field in fields:
if field.name == 'ID':
value = row.getValue(field.name)
if value == 0:
print row
rows.deleteRow(row)
else:
pass
提前致谢
答案 0 :(得分:1)
如果在python窗口中运行ArcMap内的脚本,则可以执行以下操作:
>>> import arcpy
>>> arcpy.SelectLayerByAttribute_management("final","NEW_SELECTION",'"Id" = 0')
>>> arcpy.DeleteFeatures_management("final")
如果您在ArcMap环境之外运行脚本,那么您只需要设置工作目录并在执行选择之前将脚本指向“final.shp”。
希望这会有所帮助