我从 USGS 订购了一大堆陆地卫星场景,它们以 tar.gz 档案的形式提供。我正在编写一个简单的 python 脚本来解压它们。每个档案包含 15 个 60-120 mb 大小的 tiff 图像,总计超过 2 GB。我可以使用以下代码轻松提取整个存档:
import tarfile
fileName = "LT50250232011160-SC20140922132408.tar.gz"
tfile = tarfile.open(fileName, 'r:gz')
tfile.extractall("newfolder/")
我实际上只需要这 15 个 tiff 中的 6 个,在标题中标识为“乐队”。这些是一些较大的文件,因此它们加起来约占数据的一半。所以,我想我可以通过如下修改代码来加快这个过程:
fileName = "LT50250232011160-SC20140922132408.tar.gz"
tfile = tarfile.open(fileName, 'r:gz')
membersList = tfile.getmembers()
namesList = tfile.getnames()
bandsList = [x for x, y in zip(membersList, namesList) if "band" in y]
print("extracting...")
tfile.extractall("newfolder/",members=bandsList)
但是,向两个脚本添加一个计时器显示第二个脚本没有显着的效率提升(在我的系统上,两个脚本都在一个场景中运行大约一分钟)。虽然提取速度有点快,但似乎这种增益被确定首先需要提取哪些文件所花费的时间所抵消。
问题是,这种权衡是我正在做的事情所固有的,还是只是我的代码效率低下的结果?我对 python 比较陌生,今天才发现 tarfile,所以如果后者是真的,我不会感到惊讶,但我还没有找到任何有效提取档案的一部分的建议。
谢谢!