​python版本gdal中在py文件中创建的栅格影像如何正常关闭并使得其可以删除

发布于 2022-01-08 01:57:48 字数 1034 浏览 858 评论 1

python版本gdal中在py文件中创建的栅格影像如何正常关闭并使得其可以删除

测试py文件代码:
#coding:gb2312
import os
from osgeo import gdal
from osgeo import ogr
from osgeo.gdalconst import *

driver=gdal.GetDriverByName('GTiff')
gdal.AllRegister()

#创建一个文件浮点型的tif影像
testfile=r'c:test.tif'

outDataset=driver.Create(testfile,2762,2353,1,GDT_Float32)

os.remove(testfile)

如果在python命令行或者以py执行上述代码会出现如下报错:
WindowsError: [Error 32] : 'c:\test.tif'

testfile文件就无法删除

但是如果新开一个python命令行窗口,也就是新打开一个python进程
单独执行:
import os
os.remove(testfile)
文件可以被正常删除

疑问:Error 32是文件已经打开的错误,而没有关闭文件了所致,也就是outDataset没有被正常关闭所致
但是在python C++代码中提到了GDALClose()方法,但是我并没有在python的版本中发现对应的。

另外python中变量应该是垃圾自动回收机制的,我做了以下尝试:

在py脚本的os.remove(testfile)之前加了
outDataset.FlushCache()
或者outDataset=None

但是问题依然没有解决。

请教下 如何才能在py中正确关闭创建的影像,并可以使之删除。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑红尘 2022-01-08 02:50:29

outDataset=None是官方推荐的方法,通过Python垃圾回收机制关闭,理论上是可行的,除非你将outDataset进行了多次引用。建议检查一下代码,如果需要强制关闭的话就把Python先关了,然后重新打开就可以了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文