JupyterBoi
JupyterBoi

Reputation: 39

List Index out of range.. works on google colab but not on local machine?

I'm trying to recreate this project on my local machine. It's designed to run on Google Colab and I've recreated it there, and it works just fine. I want to try running it on my local machine now, so I installed all the required packages, anaconda, Juypter Notebook etc.

When I come to the part where I process the images:

# Loops through imagepaths to load images and labels into arrays
for path in imagepaths:
  img = cv2.imread(path) # Reads image and returns np.array
  img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Converts into the corret colorspace (GRAY)
  img = cv2.resize(img, (320, 120)) # Reduce image size so training can be faster
  X.append(img)

  #Processing label in image path   
  category = path.split("/")[3]   
  label = int(category.split("_")[0][1])   
  y.append(label) 

It throws the following error:

IndexError: list index out of range 

The code has not been changed, for the most part, and the dataset is the same. The only difference is I'm running locally vs google colab. I searched online and someone said do len(path) to verify that (in my case) it goes up to [3], which it does (its size 33).

Code has changed here:

I did not use this line, as I'm not using google colab:

from google.colab import files

The "files" is used in this part of code:

# We need to get all the paths for the images to later load them
imagepaths = []

# Go through all the files and subdirectories inside a folder and save path to images inside list
for root, dirs, files in os.walk(".", topdown=False): 
  for name in files:
    path = os.path.join(root, name)
    if path.endswith("png"): # We want only the images
      imagepaths.append(path)

print(len(imagepaths)) # If > 0, then a PNG image was loaded

On my local machine, I removed the from google.colab... line, and ran everything else normally. The keyword files is used in the code snippet above, however when running it I was thrown no errors. **NOTE len(path) on Jupyter shows 33, len(path) on Google shows 16..?**

Does anyone have any idea what the issue could be? I don't think it came from removing that one line of code. If it did, what do you suggest I do to fix it?

Upvotes: 1

Views: 3351

Answers (1)

user_3pij
user_3pij

Reputation: 1402

Your local machine is running on Windows while the colab runs on linux and the path separators are different for both. Now you need to replace

category = path.split("/")[3]

with

category = path.split("\\")[2]

And your code should work.

Upvotes: 1

Related Questions