誰かがこのコードの最後の2行が何をするかを理解するのを手伝ってくれませんか?
import arcpy
arcpy.env.workspace = "c:/esripress/python/data/exercise07"
arcpy.env.overwriteOutput = True
copy = arcpy.CopyFeatures_management("airports.shp","Results/airports.shp")
fc = "Results/airports.shp"
cursor = arcpy.da.UpdateCursor(fc, ["STATE"], ' "STATE" <> \'AK\'')
for row in cursor:
row[0] = "AK"
cursor.updateRow(row)
del row
del cursor
ループ関数が「AK」の値を持たない各レコードを通過し、そのレコードに「AK」の値を与えることを理解しています。しかし、私は理解していないことは何であるdel row
とdel cursor
行うことを意味しています。
スティーブンは良い答えを書きましたが、行/カーソルオブジェクトを解放(削除)することが重要である理由を明らかにしていません。カーソルまたは行オブジェクトが開いていると、フィーチャクラスがロックされたままになるため、通常はアプリケーションを閉じてロックを保持しているセッションを終了するまで、フィーチャクラスに変更を加えようとすると問題が発生しますが、コンピューターの再起動と同じくらい深刻な場合があります。フィールドは1つしかないため、リストである必要はありません(['state']ではなく 'state'のみですが、実行が停止することはありません。ただし、 'AK'ではない状態は "AK"で上書きされます。スティーブンは言った
—
マイケル・スティムソン2017
あなたの入力をありがとう、みんなが言ったすべてが完璧に理にかなっていた。*注意、airportsシェープファイルはAKの空港のものです。STATEの値を持たないレコードを入力していました。
—
ゲイブ2017
State
以前はアラスカになかった空港の価値を損なうものと思われます