从landsat tar.gz

时间:2017-06-08 18:43:05

标签: python windows python-2.7 extraction landsat

我有一个Landsat场景列表。 tar.gz里面是多个乐队。像:

档案“ LC08018051date.tar.gz

  

LC08_date_sr_band1.tif
  LC08_date_sr_band2.tif
  LC08_date_sr_band3.tif
  LC08_date_sr_band4.tif
  LC08_date_sr_band5.tif
  LC08_date_sr_band6.tif
  LC08_date_sr_band7.tif

我只需要提取LC08_date_sr_band3.tifLC08_date_sr_band4.tif来计算索引。

此代码可以从所有文件中提取所有“band”。

import tarfile
import os
import glob
files = glob.glob('L*.tar.gz')
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band" in y]
    print("extracting...")
    tfile.extractall("Folder/",members=bandsList)
    print ("Done")

事情是我只需要提取sr_band3和sr_band4

1 个答案:

答案 0 :(得分:0)

不是最好的选择,但我所做的是:

import tarfile
import os
import glob
import re
files = glob.glob('L*.tar.gz')
if not files: 
   raise Exception('No se han encontrado archivos a procesar')
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band3" in y]
    print("extracting...")
    tfile.extractall("bands/",members=bandsList)
    print ("Done")
for fileName in files:
    tfile = tarfile.open(fileName, 'r:gz')
    membersList = tfile.getmembers()
    namesList = tfile.getnames()
    bandsList = [x for x, y in zip(membersList, namesList) if "sr_band4" in y]
    print("extracting...")
    tfile.extractall("bands/",members=bandsList)
    print ("Done")

代码每次都输入到文件中,因此不是最快的方法。