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

"No such file or directory exist", but it obviously does

我正在尝试将多个 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 是连接 directory/file 名称的更安全方法,否则您的代码在额外正斜杠的情况下或在不同操作系统中 运行 时容易出错.

除了已发布的答案,您实际上可以通过使用 scandir instead of listdir, which yields 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)