Как выбрать только тип файла с os.listdir? - PullRequest
0 голосов
/ 26 апреля 2019

после объединения 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')

Я думаю, что создание цикла тиса было бы хорошей идеей, но я не знаю, как это сделать ... Идеи?

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Найдите расширение файла, используя os.path.splitext

for f in os.listdir('<path>'):
    name, ext = os.path.splitext(f)
    if ext == '.img':
        #do stuff
0 голосов
/ 26 апреля 2019

Hello. Вы можете использовать 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}'))
0 голосов
/ 26 апреля 2019

Почему бы вам не использовать glob?

from glob import glob

for f in glob('/your/path/*.img'):
    pass  # add your code here
...