[QGIS-it-user] deleteShapefile in pyqgis

Andrea Giudiceandrea andreaerdna a libero.it
Gio 27 Gen 2022 12:45:21 PST


Ciao Pierluigi,
QgsVectorFileWriter.deleteShapeFile() può cancellare solo i file dello 
Shapefile che non sono utilizzati da alcun processo.

QgsProject.instance().removeMapLayer(), quando utilizzato in uno script 
Python, non rilascia tutti gli handle del processo qgis.exe dei due file 
*.shp e *.dbf che quindi il sistema operativo considera ancora 
utilizzati e non permette di cancellarli.
Gli handle vengono rilasciati solo alla fine dell'esecuzione dello script.
Il problema dovrebbe dipendere dal fatto che l'uso di 
QgsProject.instance() non è thread-safe.
Se stai sviluppando un algoritmo di processing, potresti provare a 
dichiararlo come QgsProcessingAlgorithm.FlagNoThreading

Se fai una ricerca in Internet con un motore di ricerca ti accorgerai 
che si sono varie pagine su gis.stackexchange.com relative a questo 
problema, oltre ad un paio di bug report nel repository GitHub di QGIS.

Se riesci a trovare una soluzione... facci sapere! Altrimenti forse 
potresti sollevare la questione chiedendo chiarimenti nella mailing list 
qgis-developer (nella quale pure è già stata in passato affrontata senza 
risolverla).

A presto.

Andrea Giudiceandrea


Maggiori informazioni sulla lista QGIS-it-user