问题概要:我们能读写文件吗焦油gz没有减压?在
我有许多tar.gz
文件,命名为GF1_PMS1_E72.0_N33.6_20160507_L1A0001568810.tar.gz
每个tar.gz
文件包含如下文件:
GF1_PMS1_E72.6_N33.6_20160511_L1A0001576267-MSS1.tiff
GF1_PMS1_E72.6_N33.6_20160511_L1A0001576267-MSS1.xml
GF1_PMS1_E72.6_N33.6_20160511_L1A0001576267-MSS1.rpb
GF1_PMS1_E72.6_N33.6_20160511_L1A0001576267-MSS1.jpg
我想在不解压缩的情况下将tiff
读入numpy数组,因此我需要获得tiff
的完整路径,但是我使用tarfile package失败了。在
下面是我尝试的代码:
^{pr2}$raster2array
是一个将图像读取到numpy数组的函数。在
def raster2array(rasterfn):
raster = gdal.Open(rasterfn)
array = raster.ReadAsArray()
return array
则其抛出错误如下:
ERROR 4: `H:\alongKKH IMAGES1\GF1_PMS1_E72.0_N33.6_20160507_L1A0001568810.tar.gz\GF1_PMS1_E72.0_N33.6_20160507_L1A0001568810-MSS1.tiff' does not exist in the file system,
and is not recognized as a supported dataset name.
谁能帮我,我会很感激的,谢谢。我在windows上使用python。在
tarfile没有read(),zipfile有它,所以:
import zipfile file = zipfile.ZipFile(inpath+'GF1_PMS1_E72.zip', "r") for name in file.namelist(): data = file.read(name) print name, len(data), repr(data[:10])
;如果您搜索并获得tarfile的read(),如上面所示。在
“rasterfn”不是物理文件,则发生错误。 支持VSI虚拟文件API的驱动程序,可以在.tar/中打开文件。焦油gz/.tgz存档(请参见VSIInstallTarFileHandler()): VSIInstallTarFileHandler()
(inpath,tarname+'\'+file_name)只是一个路径,不是真正的file,raster2array支持tar吗?如果不能,那么“文件系统中不存在”。在