Если вы правильно удаляете как объекты строки, так и объекты курсора (например del row, rows
), и блокировка остается, скорее всего, потому что сам ArcMap, а не arcpy, все еще ссылается на него.
На шейп-файл ссылается слой в оглавлении или он добавлен в оглавление вашим скриптовым инструментом?
Если последнее, вы можете попробовать отключить «Добавить результаты операций геообработки на экран» в разделе « Геообработка-> Параметры геообработки в ArcMap».
Дополнительное предложение: если вы делаете это как временный / промежуточный набор данных, и число объектов не слишком велико, попробуйте использовать in_memory
рабочее пространство вместо шейп-файла, чтобы полностью обойти проблему блокировки и получить хороший потенциальный прирост производительности. ,
Обязательно удалите рабочую область in_memory или определенные наборы данных, которые вы создаете там, используя Delete (Data Management) перед выходом из сценария, в противном случае она будет оставаться в памяти до тех пор, пока приложение не закроется.
Наконец, я также хотел бы отметить, что поведение блокировки шейп-файла изменилось в 10.0, чтобы стать более строгим, не удаляя файлы блокировки при удалении слоя из оглавления. Смотрите также эту статью и этот связанный вопрос .