Python 列表索引超出范围。。可以在google colab上工作,但不能在本地计算机上工作?
我正在尝试在本地计算机上重新创建此项目。它的设计是在Google Colab上运行的,我在那里重新创建了它,它运行得很好。我现在想在我的本地机器上运行它,所以我安装了所有需要的软件包,anaconda,Juypter笔记本等等 当我谈到处理图像的部分时:Python 列表索引超出范围。。可以在google colab上工作,但不能在本地计算机上工作?,python,list,tensorflow,indexing,range,Python,List,Tensorflow,Indexing,Range,我正在尝试在本地计算机上重新创建此项目。它的设计是在Google Colab上运行的,我在那里重新创建了它,它运行得很好。我现在想在我的本地机器上运行它,所以我安装了所有需要的软件包,anaconda,Juypter笔记本等等 当我谈到处理图像的部分时: # Loops through imagepaths to load images and labels into arrays for path in imagepaths: img = cv2.imread(path) # Reads
# 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)
它抛出以下错误:
IndexError: list index out of range
代码大部分没有更改,数据集是相同的。唯一的区别是我在本地运行,而不是google colab。我在网上搜索,有人说do len(路径)来验证(在我的例子中)它是否上升到[3],它确实如此(大小33)
此处的代码已更改:
我没有使用这一行,因为我没有使用google colab:
from google.colab import files
本部分代码中使用了“文件”:
# 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
在我的本地机器上,我从google.colab…行中删除了,并正常运行其他所有内容。上面的代码段中使用了关键字文件,但是在运行它时没有抛出任何错误<代码>**注意Jupyter上的len(路径)显示为33,Google上的len(路径)显示为16..?**
有人知道这是什么问题吗?我不认为这是因为删除了那一行代码。如果是,您建议我如何修复它?您的本地计算机运行在
Windows
上,而colab
运行在linux
上,并且两者的路径分隔符不同。
现在你需要替换
category = path.split("/")[3]
与
您的本地计算机运行在
Windows
上,而colab
运行在linux
上,两者的路径分隔符不同。
现在你需要替换
category = path.split("/")[3]
与
你的代码应该可以工作。听起来问题出在你的一次拆分中(你忘了告诉我们哪一次是给你带来问题的)。在google colab和您的本地机器上,
path
的值是多少?您好@SergioR,问题在于Jupyter上的拆分。这正是错误指向的地方。在google上执行len(path)时,我得到16,但在Jupyter上我得到33..?你能为google colab和你的本地机器提供path
的输出吗?您可以使用print(imagepaths[0])
进行此操作。@user\u 3pij,print(imagepaths[0])
的结果如下:/leappestrecog/leappestrecog/00/01\u palm/frame\u 00\u 01\u 0001.png
在我的本地机器上,它的“\\00\\01\u palm\\frame\u 00\u 01\u 0001.png”听起来像是在您的一次拆分中出现了问题(你忘了告诉我们哪个是给你带来问题的)。google colab和你的本地机器上的path
值多少?嗨@SergioR,问题是Jupyter上的拆分。这正是错误所在。执行len(path)时在google上我得到16,但在Jupyter上我得到33..?你能为google colab和你的本地机器提供path
的输出吗?你可以使用print(ImagePath[0])
来实现这一点。@user_3pij,print(ImagePath[0])
结果如下:/leappestrecog/leappestrecog/00/01_palm/frame_00_01_0001.png
在我的本地机器上,它的“.\\00\\01_palm\\frame_00_01_0001.png”谢谢你!就是它,我没意识到。干杯!谢谢!就是它,我没意识到。干杯!