Hi enrico, as far as I see from the reference you added the solution would be to add the result (resp. output) to a Layer instead "tempOutput". Then you remove that Layer, I suppose while removing the layer a reference on "tempOutput" ist released.
cheers Stefan > enrico chiaradia <[email protected]> hat am 27. April 2017 um 15:13 > geschrieben: > > > Dear List, > > I'd like to remove an existing file (see [tempOutput]) after it was used > by a geoalgorithm. The geoalgorithm works perfectly but after its > execution, the file [tempOutput] is locked. > > Here a simple test script that returns "[Error 32] The process cannot > access the file because it is being used by another process: > 'D:/test_alg/map_to_clip.tif'": > > import processing > import os > > tempOutput = 'D:/test_alg/map_to_clip.tif' > maskFN = 'D:/test_alg/mask.shp' > output = 'D:/test_alg/clipped_map.tif' > > algRes = processing.runalg("gdalogr:cliprasterbymasklayer", > tempOutput, > maskFN, > "-9999",False,False,False,5,4,75,6,1,False,0,False,"", > output) > > try: > os.remove(tempOutput) > except Exception as e: > print e > > I also found a solution on the web [1] but it doesn't work for me :( If > I understand correctly, the trick is to load the file as layer and then > release it. Here its implementation: > > import processing > import os > > tempOutput = 'D:/test_alg/map_to_clip.tif' > maskFN = 'D:/test_alg/mask.shp' > output = 'D:/test_alg/clipped_map.tif' > > algRes = processing.runalg("gdalogr:cliprasterbymasklayer", > tempOutput, > maskFN, > "-9999",False,False,False,5,4,75,6,1,False,0,False,"", > output) > > try: > # add to the map > tempLay = QgsRasterLayer(tempOutput, "tempLay") > if not tempLay.isValid(): raise Exception("Failed to load tempLay") > QgsMapLayerRegistry.instance().addMapLayer(tempLay) #!!!! > > layermap = QgsMapLayerRegistry.instance().mapLayers() > for i, layer in layermap.iteritems(): > print 'layername',layer.source() > if layer.source() == tempOutput: > # Remove layer references > QgsMapLayerRegistry.instance().removeMapLayer(layer.id()) #!!!! > # Delete the file > os.remove(tempOutput) > > except Exception as e: > print e > > I didn't find any other solution for the moment. Any suggestion is > really very appreciate! > > Thanks > > enrico > > > [1] > https://gis.stackexchange.com/questions/93143/can-not-delete-file-after-using-runalg-function > > > > _______________________________________________ > Qgis-developer mailing list > [email protected] > List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer > Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer _______________________________________________ Qgis-developer mailing list [email protected] List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
