I would like to multiply 4band raster from a directory with corresponding 1 band cloud masks to get cloudfree 4band raster in the end. In my attempt, I started with multiplying the first band by the cloud mask. The cloud mask raster are already reclassified ( pixels with values = 0, pixels with no values or clouds= nodata). The problem is that the scripts returns just sometimes one file and returns errors I don't understand:
ERROR 1: Deleting D:/SR\20170207_4band.tif failed:Permission denied
-----------
import pandas as pd
import gdal
import os
import numpy as np
import glob
SR_images = 'D:/SR'
sr = glob.glob(os.path.join(SR_images, '*.tif'))
reclass = 'D:/reclass'
mask = glob.glob(os.path.join(reclass, '*.tif'))
savedest = r'D:\maskedsr'
for e, i in zip(sr, mask):
srraster = gdal.Open(os.path.join(SR_images, e))
maskraster = gdal.Open(os.path.join(reclass, i))
band1 = srraster.GetRasterBand(1).ReadAsArray()
band2 = srraster.GetRasterBand(2).ReadAsArray()
band3 = srraster.GetRasterBand(3).ReadAsArray()
band4 = srraster.GetRasterBand(4).ReadAsArray()
bandmask = maskraster.GetRasterBand(1).ReadAsArray()
geotransform = srraster.GetGeoTransform()
geoproj = srraster.GetProjection()
xsize = srraster.RasterXSize
ysize = srraster.RasterYSize
format1 = "GTiff"
driver = gdal.GetDriverByName(format1)
dst_datatype = gdal.GDT_UInt16
cal_band1 = band1 * bandmask
name = e
output_path = os.path.join(savedest, name)
dst_ds = driver.Create(output_path, xsize, ysize, 1, dst_datatype)
dst_ds.GetRasterBand(1).WriteArray(cal_band1)
dst_ds.SetGeoTransform(geotransform)
dst_ds.SetProjection(geoproj)
dst_ds.FlushCache()
dst_ds = None
Thanks!