【问题标题】:FileNotFoundError but the file is in the directoryFileNotFoundError 但文件在目录中
【发布时间】:2020-05-09 14:03:49
【问题描述】:

因此,当我尝试将多个 Excel 文件连接到一个 df 中时,它会向我显示:

FileNotFoundError: [Errno 2] No such file or directory: 'Agosto_2019.xlsx'

我不明白为什么,因为文件在目录中。到目前为止我的代码是


files = [file for file in os.listdir('.\meses_31')]


mes_31 = pd.DataFrame()
for file in files:
    año = file.split('.')[0].split('_')[-1]
    mes = file.split('.')[0].split('_')[0]
    name = file
    print(name)
    df = pd.read_excel(name, skiprows = 14)
    df = df.loc[:, df.columns.notnull()]
    df = df.loc[:, ~df.columns.str.contains('^Unnamed', na=False)]
    df = df.loc[:, ~df.columns.str.contains('^None', na=False)]
    df = df.loc[:, ~df.columns.str.contains('RESUMEN MES', na=False)]
    df['año']= año
    df['mes']= mes
    mes_31 = pd.concat([mes_31, df_], sort=False)
mes_31.head()

有些名字是西班牙语,但这不相关。 Mes 翻译为月,año 翻译为年。我想做的一件事是创建一个新行来指示年份和月份。

【问题讨论】:

  • 您的文件数组将包含“meses_31”文件夹中的文件名,而read_excel 将在当前文件夹中查找该文件。使用类似pd.read_excel('.\meses_31\'+name, skiprows = 14)
  • 题外话,但如果您在字符串中添加反斜杠,最好使用原始字符串,即r'.\meses_31'
  • 顺便说一句,欢迎来到 SO!如果您需要建议,请查看 tourHow to Ask。我更改了您问题的标题,以更准确地反映您遇到的问题 - 希望对您有所帮助。将来它将帮助您使用最少的代码和完整的错误消息制作minimal reproducible example

标签: python


【解决方案1】:

os.listdir() 列出没有目录名的文件,因此您得到的是'Agosto_2019.xlsx' 而不是'.\\meses_31\\Agosto_2019.xlsx',所以pd.read_excel 尝试在当前目录中打开该文件,但它不存在。

处理此问题的最佳方法可能是使用os.chdir() 更改工作目录。

os.chdir('meses_31')
files = os.listdir('.')  # List comprehension not needed

for file in files:
    ...
    pd.read_excel(file, ...)
    ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 2021-06-24
    • 2018-10-16
    • 2019-01-27
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    相关资源
    最近更新 更多