使用gdal打开遥感影像后,若未显式关闭数据集(如band1_ds = gdal.open(…)后未调用band1_ds = none),python进程会持续持有文件句柄,导致后续os.remove()报错“the process cannot access the file because it is being used by another process”。
在GDAL中,gdal.Open()返回的是一个Dataset对象,该对象底层会锁定对应文件(尤其在Windows系统上),直到其被显式释放。仅将读取的数组变量(如Band1)设为None,完全不会释放文件句柄——真正需要置空的是打开数据集时创建的句柄变量(如Band1_ds, Band2_ds等)。这是本例中删除失败的根本原因:代码中设置了Band1 = None,却遗漏了Band1_ds = None、Band2_ds = None等关键释放操作。
✅ 正确做法:为每个gdal.Open()显式配对= None
在读取完波段数据后,立即释放对应的数据集对象: