Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"IsADirectoryError: [Errno 21] Is a directory: " It is a file

Tags:

I already split the data into test and training set into the different folder. Now I need to load the patient data. Each patient has 8 images.

def load_dataset(root_dir, split):     """     load the data set numpy arrays saved by the preprocessing script     :param root_dir: path to input data     :param split: defines whether to load the training or test set     :return: data: dictionary containing one dictionary ({'data', 'seg', 'pid'}) per patient     """     in_dir = os.path.join(root_dir, split)     data_paths = [os.path.join(in_dir, f) for f in os.listdir(in_dir)]     data_and_seg_arr = [np.load(ii, mmap_mode='r') for ii in data_paths]     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 

But, the error said:

File "/home/zhe/Research/Seg/heart_seg/data_loader.py", line 61, in load_dataset data_and_seg_arr = [np.load(ii, mmap_mode='r') for ii in data_paths] File "/home/zhe/Research/Seg/heart_seg/data_loader.py", line 61, in <listcomp> data_and_seg_arr = [np.load(ii, mmap_mode='r') for ii in data_paths] File "/home/zhe/anaconda3/envs/tf_env/lib/python3.6/site-packages/numpy/lib/npyio.py", line 372, in load fid = open(file, "rb") IsADirectoryError: [Errno 21] Is a directory: './data/preprocessed_data/train/Patient009969' 

It is already a file name, not a directory. Thanks!

like image 200
Zhuo Avatar asked Sep 14 '18 20:09

Zhuo


People also ask

Is a directory is a directory 21?

The Python "IsADirectoryError: [Errno 21] Is a directory" occurs when we try to interact with a directory as if it were a file. To solve the error, provide the complete path to the file if trying to work on a file or select all of the files in the directory and use a for loop.

Is a directory OS Error 21?

The Python error “IsADirectoryError: [Errno 21] Is a directory” occurs when you try to do an invalid operation on a directory such as calling open() or os. remove() on it. Avoid this error by ensuring the file you're working with is a regular file first by using os. path.

How do I fix folder errors in Python?

To solve No Such File Or Directory Error in Python, ensure that the file exists in your provided path. To check all the files in the directory, use the os. listdir() method.


1 Answers

It seems that ./data/preprocessed_data/train/Patient009969 is a directory, not a file.

os.listdir() returns both files and directories.

Maybe try using os.walk() instead. It treats files and directories separately, and can recurse inside the subdirectories to find more files in a iterative way:

data_paths = [os.path.join(pth, f)  [for pth, dirs, files in os.walk(in_dir) for f in files] 
like image 167
nosklo Avatar answered Sep 19 '22 05:09

nosklo