Python 本地文件与ftp文件

Python 本地文件与ftp文件,python,ftp,gdal,Python,Ftp,Gdal,当光栅文件位于本地文件系统中时,我可以使用GDAL库成功获取该文件格式的相关信息: import gdal from gdalconst import * filename= "MOD11A1.A2012193.h11v11.005.2012196013534.hdf" dataset = gdal.Open( filename, GA_ReadOnly ) print ( dataset.GetDriver().ShortName,dataset.GetDriver().LongName)

当光栅文件位于本地文件系统中时,我可以使用GDAL库成功获取该文件格式的相关信息:

import gdal
from gdalconst import *
filename= "MOD11A1.A2012193.h11v11.005.2012196013534.hdf"
dataset = gdal.Open( filename, GA_ReadOnly )
print ( dataset.GetDriver().ShortName,dataset.GetDriver().LongName)
输出:

('HDF4', 'Hierarchical Data Format Release 4')
但是,当我使用相同的光栅文件尝试此操作时,但这次位于ftp服务器上,我得到一个错误:

import gdal   
from gdalconst import *
filename="ftp://ladsweb.nascom.nasa.gov/allData/5/MOD11A1/2012/193/MOD11A1.A2012193.h11v11.005.2012196013534.hdf"
dataset = gdal.Open( filename, GA_ReadOnly )
print ( dataset.GetDriver().ShortName,dataset.GetDriver().LongName)
有错误的输出:

ERROR 4: `/vsimem/http_1/MOD11A1.A2012193.h11v11.005.2012196013534.hdf' not recognised as a supported file format.

('HDF4', 'Hierarchical Data Format Release 4')

为什么会这样?

尝试添加
/vsicurl/
前缀。我的GDAL构建不支持HDF4驱动程序,因此我无法测试你的url。但通常情况下,它应该起作用:

gdalinfo /vsicurl/http://lance-modis.eosdis.nasa.gov/imagery/subsets/?subset=Europe_2_02.2013259.terra.2km.tif
有关更多信息,请参阅此链接:

您不能只给出FTP URL,而期望大部分时间都能获取它们。您需要编写代码来显式下载文件,然后打开它。@Linuxios我知道如何下载文件。我只是想做得更简单,不需要下载文件。在这两种情况下,输出都会正确打印出来,但在第二种情况下(ftp情况),输出会与错误一起打印。然后,您从中获取的服务器可能报告了错误的文件类型。这是我的猜测。@Linuxios但是第一个案例的本地文件是从给出错误的同一个ftp链接下载的。