Ошибка "Неверно задано имя папки"

программа в python выдает ошибку "NotADirectoryError: [WinError 267] Неверно задано имя папки:C:\Users\Evdokiya\" Понимаю, что ей не нравятся двойные слэшы, но как от них избавиться?? программу взяла с сайта и там в примере все работает правильно.

пример программы

import os

def read_landsat8_b4b5(base_path):
    """Читайте B4,B5 Band
    base_path:  Папка, в которой хранится несколько изображений
    mid_path:  Папка в разных полосах хранится, соответствующая одному изображению
    final_path:  Однополосный файл, который можно открыть непосредственно на последнем уровне
    """

    files_b4 = []
    files_b5 = []
    key_b4 = 'B4.TIF'
    key_b5 = 'B5.TIF'

     # Читать файл внешнего слоя
    base_files = os.listdir(base_path)

     # Прочтите средний файл
    for mid_file in base_files:
        mid_path = base_path + '\\' + mid_file
        mid_files = os.listdir(mid_path)

             # 4 Список файла B4, B5 Band
        for final_file in mid_files:
            final_path = base_path + '\\' + mid_file + '\\' + final_file
            if key_b4 in final_file:
                files_b4.append(final_path)
            if key_b5 in final_file:
                files_b5.append(final_path)

    return files_b4, files_b5


if __name__ == '__main__':
    base_path = r'E:\ROMOTE_DATA\LANDSAT_202009'
    f_b4, f_b5 = read_landsat8_b4b5(base_path)
    print('B4 Band: {b4}'.format(b4=f_b4))
    print('B5 Band: {b5}'.format(b5=f_b5))

нашла в интернете, что можно применить mid_path = os.path.join(base_path, mid_file) но это ничего не поменяло.


Ответы (1 шт):

Автор решения: Alex Titov

Дело не в двойных слешах, хотя os.path.join, конечно, гораздо лучше! В каталоге base_path, вероятно, есть файл, а не только каталоги, а на файле вызов mid_files = os.listdir(mid_path) выдает указанную ошибку.

Update: вероятное решение (несформулированной) задачи. пути к файлам из f_b4, f_b5 можно использовать для открытия файлов, или преобразовать в строки, если нужен только список

from pathlib import Path

if __name__ == '__main__':
    base = Path(r'C:\Users\Evdokia')
    f_b4, f_b5 = base.glob('**/*B4.TIF'), base.glob('**/*B5.TIF')
    print(f'B4 Band: {list(f_b4)}')
    print(f'B5 Band: {list(f_b5)}')
→ Ссылка