Здесь у меня много пациентов, каждая справка имеет 10 изображений. И у меня есть список, в котором хранятся некоторые каталоги, что я хочу.
Как загрузить/прочитать файлы только из каталога в списке (data_paths)?
# data_paths is the list
data_paths = ['./data/preprocessed_data/train/Patient009969', './data/preprocessed_data/train/Patient009928', './data/preprocessed_data/train/Patient009966']
data_and_seg_arr = [np.load(ii, mmap_mode='r') for ii in data_paths]
Eror:
IsADirectoryError: [Errno 21] Is a directory: './data/preprocessed_data/train/Patient009969'
Мне нужно сохранить эту форму данных. потому что мне нужно будет:
pids = [ii.split('/')[-1].split('.')[0] for ii in data_paths]
data = OrderedDict()
for ix, pid in enumerate(pids):
data[pid] = {'data': data_and_seg_arr[ix][..., 0], 'seg': data_and_seg_arr[ix][..., 1], 'pid': pid}
return data
Вам нужно будет создать еще один цикл, повторяющийся через файлы внутри списка путей.
import os
for path in data_paths:
for file in os.listdir(path):
data_and_seg_arr = [np.load(file, ...
Вы когда-нибудь пытались загрузить только один файл из своего списка?
Может быть, вы должны проверить свое "свойство файла", так как я думаю, что исключение Errno 21
python open()
не numpy.
https://github.com/numpy/numpy/blob/v1.15.1/numpy/lib/npyio.py#L384
Это сообщение об ошибке поможет.
Предполагая, что все файлы находятся в формате jpg или png
path="/path/to/image"
#NOTE THIS IS REALLY IMPORTANT
#IF YOUR PATH IS LIKE THIS /path/to/image YOU NEED TO ADD A / AT THE END, IF
#YOUR PATH ALREADY HAVE THE "/" AT THE END YOU DON'T NEED TO ADD IF
#EXAMPLE PROBLEM PATH:/path/to/image
#PATH WITH NO PROBLEM /path/to/image/
jpg = glob.glob(path + "/*.jpg")
png = glob.glob(path + "/*.png")
imagelist=jpg+png
>>>print(type(imagelist))
<class 'list'>
Надеюсь, что это решит вашу проблему
np.load
. Таким образом,data_paths
должен содержать файлы, а не каталог