Ошибка "Неверно задано имя папки"
программа в 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 шт):
Дело не в двойных слешах, хотя 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)}')