我正在订购美国地质勘探局的大堆土地场景,这些场景来自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/")
Run Code Online (Sandbox Code Playgroud)
我实际上只需要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)
Run Code Online (Sandbox Code Playgroud)
但是,为两个脚本添加一个计时器显示第二个脚本没有显着的效率增益(在我的系统上,两个脚本在一个场景上运行大约一分钟).虽然提取速度稍微快一点,但似乎这个增益可以通过确定首先需要提取哪些文件所花费的时间来抵消.
问题是,这种权衡取决于我正在做的事情,还是仅仅是我的代码效率低下的结果?我是python的新手,今天才发现tarfile,所以如果后者是真的我也不会感到惊讶,但是我还没有找到任何有效提取存档的部分建议.
谢谢!