Hi Enrico, how is that file map_to_clip.tif created? There still could be a reference on that file, maybe because of the generation process (I assume that because you call it tempOutput, so there could be still a reference from another process). For example, if that file is visualized somewhere there definitly is a referene on that file.
cheers Stefan > enrico chiaradia <[email protected]> hat am 27. April 2017 um 16:29 > geschrieben: > > > Hi Stefan and many thanks for your answer! but it seems not working :( > Here the new code. I replaced "tempOutput" with "output". Layer is > correctly loaded and removed but "tempOutput" cannot be deleted. > > 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(output, "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(): > if layer.source() == output: > print 'layername',layer.source() > # Remove layer references > QgsMapLayerRegistry.instance().removeMapLayer(layer.id()) #!!!! > > # Delete the file > os.remove(tempOutput) > > except Exception as e: > print e > > > > > Il 27/04/2017 16:07, Stefan Kiefer ha scritto: > > 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
