"No such file or directory exist" ,但它显然确实如此



我试图将多个excel文件导入到DataFrame,但我得到错误:FileNotFoundError: [Errno 2]没有这样的文件或目录:'test1.xlsx'

代码:

path=os.getcwd()
files = os.listdir(path+"/testimport")
df = pd.DataFrame()
for f in files:
data = pd.read_excel(f,
sheet_name = "Data",
skiprows = range(0, 4),
usecols = "B:I,P:V")
df = df.append(data)

然而,当我尝试打印文件时,它实际上是工作的:

in:    for f in files:
print(f)

out:    test1.xlsx
test2.xlsx

这是如何可能的,如何解决它?我试过绝对路径,但结果相同。

您应该提供输入文件的完整路径(包括目录名)。目前,您只提供了文件名。因此,读行应该像下面这样:

data = pd.read_excel(os.path.join(path, "testimport", f), sheet_name = "Data", skiprows = range(0, 4), usecols = "B:I,P:V")

注意:os.path.join是连接目录/文件名的更安全的方式,否则您的代码将在额外的正斜杠的情况下或在不同的操作系统中运行时容易出错。

对于发布的答案,您实际上可以通过使用scandir而不是listdir来简化您的代码,这会产生DirEntry对象,它具有作为path属性可用的完整路径

import os
df = pd.DataFrame()
for f in os.scandir(os.path.join(os.getcwd(), "testimport")):
data = pd.read_excel(
f.path,
sheet_name="Data",
skiprows=range(0, 4),
usecols = "B:I,P:V"
)
df = df.append(data)

您也可以更改当前工作目录os.chdir('./testimport'):

os.chdir('./testimport')
path=os.getcwd()

files = os.listdir(path)

df = pd.DataFrame()

for f in files:
data = pd.read_excel(f,
sheet_name = "Data",
skiprows = range(0, 4),
usecols = "B:I,P:V")
df = df.append(data)

相关内容

最新更新