suimeng18 2024-03-23 17:12 采纳率: 0%
浏览 390

pandas读取EXCEL文件报错“File is not a zip file”

pandas读取EXCEL文件报错“File is not a zip file”


```python
for fname in os.listdir(fpath):
    io = os.path.join(fpath, fname)
    df = pd.read_excel(io,sheet_name="电子配置",header=1,usecols=[0,1,2,3],engine="openpyxl")
    print(df)
    dfs.extend(df.values)

result = pd.concat(dfs)

print(os.listdir(fpath))

```
print(df)能正确打印出第1个文件的内容,但一拼接就报错。

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-23 17:13
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    这个错误可能是因为文件本身并不是一个合法的zip压缩文件。一种可能的解决方案是尝试使用其他的pandas引擎来读取Excel文件,例如使用xlrd引擎。另外,还需要确保文件路径和文件名都正确,可以使用os.path.exists()函数来检查文件是否存在。 以下是一个可能的解决方案:
    import pandas as pd
    import os
    fpath = '/path/to/excel/files'
    dfs = []
    for fname in os.listdir(fpath):
        io = os.path.join(fpath, fname)
        if os.path.splitext(fname)[-1] in ['.xlsx', '.xls']:
            try:
                df = pd.read_excel(io, sheet_name="电子配置", header=1, usecols=[0,1,2,3], engine="openpyxl")
            except:
                df = pd.read_excel(io, sheet_name="电子配置", header=1, usecols=[0,1,2,3], engine="xlrd")
            print(df)
            dfs.append(df)
    result = pd.concat(dfs)
    print(result)
    print(os.listdir(fpath))
    

    在这个解决方案中,我们首先判断文件是否是Excel文件,然后尝试使用openpyxl引擎读取。如果读取失败,就换用xlrd引擎。最后拼接所有的数据框并打印出来。同时还打印出文件夹中所有的文件名,以便检查文件名是否正确。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月23日