首页 > 解决方案 > 索引超出范围错误

问题描述

我正在做一个项目,我和我的伙伴正在处理同一个文件。所以我创建了一个循环来读取mac或pc的文件。

我不知道为什么我有“列表索引超出范围”错误

import os
import pandas

path_main = [i for i in (r"C:\Users\charlottelongpre\Desktop", "/Users/username/Desktop") if os.path.exists(i)][0]

path_file = path_main + '/' + "DataBaseZenOuStresse_1.xlsx"

stress_df = pandas.read_excel(path_file, sheet_name="REAL_Database_projet_PSY4016")

标签: python

解决方案


如果该元组中的任何路径都不存在,则外部列表将为空,并且您将IndexError在尝试获取第一个元素时得到一个。

另请注意,更简洁的方法是使用该next函数(docs),但这在这里无济于事,因为您会得到一个StopIteration异常。

对于更强大的解决方案,您可以使用该os.path.join方法创建适用于当前操作系统的文件/目录路径,并且可以使用它pathlib.Path.home()来获取主目录。

例如:

import os
import pathlib

home_dir = str(pathlib.Path.home())
main_path = os.path.join(home_dir, "Desktop")

file_name = "DataBaseZenOuStresse_1.xlsx"
file_path = os.path.join(main_path, file_name)

当然,您可能想要添加对丢失"Desktop"目录的处理,但至少对于这个用例来说,这似乎不太可能。您也可以pandas.read_excel告诉您文件是否丢失。


推荐阅读