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

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


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]


Do you have both files and directories inside your path? os.listdir will list both files and directories, so when you try to open a directory with np.load it will give that error. You can filter only files to avoid the error:

data_paths = [os.path.join(in_dir, f) for f in os.listdir(in_dir)]data_paths = [i for i in data_paths if os.path.isfile(i)]

Or all together in a single line:

data_paths = [i for i in (os.path.join(in_dir, f) for f in os.listdir(in_dir)) if os.path.isfile(i)]


I had the same problem but i resolved by changing my path from Data/Train_Data/myDataset/(my images) to Data/Train_Data/(my images) where the script python is in the same path as Data.Hope this help.