我有一个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.tif
和LC08_date_sr_band4.tif
来计算索引。
此代码可从所有文件中提取所有"频段"。
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
不是最好的选择,但我要做的是:
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")
代码每次输入文件,因此不是最快的方法。