Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 gdal.driver.create正在删除目录中的另一个文件_Python 2.7_Gdal - Fatal编程技术网

Python 2.7 gdal.driver.create正在删除目录中的另一个文件

Python 2.7 gdal.driver.create正在删除目录中的另一个文件,python-2.7,gdal,Python 2.7,Gdal,我在python中使用gdal已经有几年了,在过去的几天里,我发现gdal驱动程序的Create命令中可能有一个bug。我正在使用陆地卫星图像,并在一些场景中尝试了以下代码,每次都有相同的结果。在某些情况下,当我调用create时,它会删除目录中的另一个文件(始终是MTL文件) 如果我使用第一个输出文件名,它创建了一个与其余陆地卫星波段文件匹配的文件名,并且文件“输出文件”已经存在,它将被替换(预期行为),met文件将被删除(意外行为)。如果我使用第二个输出文件名(与陆地卫星波段文件名格式不匹配

我在python中使用gdal已经有几年了,在过去的几天里,我发现gdal驱动程序的Create命令中可能有一个bug。我正在使用陆地卫星图像,并在一些场景中尝试了以下代码,每次都有相同的结果。在某些情况下,当我调用create时,它会删除目录中的另一个文件(始终是MTL文件)

如果我使用第一个输出文件名,它创建了一个与其余陆地卫星波段文件匹配的文件名,并且文件“输出文件”已经存在,它将被替换(预期行为),met文件将被删除(意外行为)。如果我使用第二个输出文件名(与陆地卫星波段文件名格式不匹配),当我运行代码时,如果“输出文件”已经存在,它只会替换旧文件(预期行为)。我找不到任何其他关于这一事件的参考资料。知道发生了什么事吗?

同样

GDAL版本:GDAL 2.1.3,2017/20/01发布

Paltform:ubuntu16.04 LTS

出于这种情况,因此:


. . .
如果os.path.exists(outputFileName):
删除(输出文件名)
dst_ds=driver.Create(输出文件名、宽度、高度、带值、gdal.GDT_Float32)
. . .

我无法用
gdal.VersionInfo()='2010100'
来复制这个。使用
\u B5\u test.tif
文件a
时,会创建
.IMD
文件,但不会删除
.MTL
文件。使用
TestB5.tif
outfile时,没有创建元数据文件。谢谢@LoganByers。您是否多次尝试在…_B5_test.tif文件已存在的情况下运行代码?在第一次运行时(其中不存在_B5_test.tif),我的.MTL文件将保留并创建test.tif文件,但如果我再次运行代码(例如_B5_test.tif已存在并应被替换),则.MTL文件仍将消失。我想我从未见过创建.IMD文件,这很有趣。我正在通过spyder在Mac上使用
gdal.VersionInfo()==“2010300”
,这是从anaconda环境中启动的。如果有帮助的话,我很乐意提供上述版本。我很高兴有人复制了这个问题!remove绝对是一个很好的解决方法(对你的答案投了赞成票),它只是一个奇怪的问题。如果你最终发现了更多关于导致这种情况的原因,请分享。
import gdal

path = '.../LC80110112013243LGN00/' #path to where ever your landsat scene is

outfile = path+path[-22:-1]+'_B5_test.tif'
#outfile = path + 'TestB5.tif'

infile = path+path[-22:-1]+'_B5.tif'

infile_open = gdal.Open(infile)
infile_array = infile_open.GetRasterBand(1).ReadAsArray()  

dtype=gdal.GDT_Float32

outfile = gdal.GetDriverByName('GTiff').Create(outfile, infile_array.shape[1], infile_array.shape[0], 1, dtype)

infile_open = None
outfile = None
infile_array = None