Как выбрать только тип файла с os.listdir?
После объединения 10 полос одного изображения я хочу преобразовать их в коэффициент отражения и, следовательно, разделить их на 10000. Тем не менее, в моих папках есть файлы двух типов, за исключением того, что я хочу применить свой код только к файлу my.img, а не к.hdr... Знаете ли вы, как я могу сделать этот выбор с помощью os.listdir?
мой код выглядит следующим образом:
import os
import spectral as sp
import spectral.io.envi as envi
src_directory = "/d/afavro/Bureau/3_stack/"
dossier = os.listdir (src_directory)
print(dossier)
for fichier in dossier:
print (fichier)
ssrc_directory = "/d/afavro/Bureau/3_stack/" + fichier
rasters = os.listdir (ssrc_directory)
print(rasters)
OUTPUT_FOLDER = "/d/afavro/Bureau/4_reflectance/" + 'reflectance_' + fichier
print(OUTPUT_FOLDER)
if not os.path.exists(OUTPUT_FOLDER):
os.makedirs(OUTPUT_FOLDER)
for image in rasters:
print (image)
img = sp.open_image(image)
print("%s opened successfully" %os.path.basename(image))
im_HS = img[:,:,:]/10000
header = envi.read_envi_header('/d/afavro/Bureau/3_stack/'+ image)
#Save index image
sp.envi.save_image(OUTPUT_FOLDER + '/reflectance_' + image, im_HS, metadate = header, force = True, interleave = 'bsq')
Я думаю, что создание петли тиса было бы хорошей идеей, но я не знаю, как это сделать... Идеи?
4 ответа
Решение
Найдите расширение файла, используя os.path.splitext
for f in os.listdir('<path>'):
name, ext = os.path.splitext(f)
if ext == '.img':
#do stuff
Если вы хотите использовать listdir, вы можете попробовать:
files = [ f for f in os.listdir('folder') if f.endswith('.img') ]
Почему ты не используешь glob
?
from glob import glob
for f in glob('/your/path/*.img'):
pass # add your code here
Здравствуйте, вы можете использовать использовать Pathlib
как объектно-ориентированная библиотека управления путями
и делать что-то вроде
from Pathlib2 import Path
pattern_1 = "type1"
pattern_2 = "type2"
list_pattern_1_files = list(Path(<YOUR_PATH>).glob(f'**/*.{pattern_1}'))
list_pattern_2_files = list(Path(<YOUR_PATH>).glob(f'**/*.{pattern_2}'))