我能在tar.gz中直接读写文件吗?

2024-09-30 06:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

问题概要:我们能读写文件吗焦油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。在


Tags: 文件numpytar数组arraygzrastertiff
2条回答

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])

和13;
和13;

如果您搜索并获得tarfile的read(),如上面所示。在

“rasterfn”不是物理文件,则发生错误。 支持VSI虚拟文件API的驱动程序,可以在.tar/中打开文件。焦油gz/.tgz存档(请参见VSIInstallTarFileHandler()): VSIInstallTarFileHandler()

(inpath,tarname+'\'+file_name)只是一个路径,不是真正的file,raster2array支持tar吗?如果不能,那么“文件系统中不存在”。在

相关问题 更多 >

    热门问题