m0_74793240 2024-09-27 09:52 采纳率: 25%
浏览 4

pycharm|报错问题

file_input_path = r"C:\Users\LYS\Desktop\SG-Z-G-vs-SG-4H-G.filter.annot.xls"
print(file_input_path)
# 指定引擎为openpyxl
data = pd.read_excel(file_input_path, header=None, engine='openpyxl')
print(data)
C:\Users\LYS\Desktop\SG-Z-G-vs-SG-4H-G.filter.annot.xls


#怎么解决以下报错


Traceback (most recent call last):
  File "C:\Program Files\pycharm\PyCharm 2023.3.2\plugins\python\helpers\pydev\pydevconsole.py", line 364, in runcode
    coro = func()
           ^^^^^^
  File "<input>", line 7, in <module>
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\pandas\io\excel\_base.py", line 495, in read_excel
    io = ExcelFile(
         ^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\pandas\io\excel\_base.py", line 1567, in __init__
    self._reader = self._engines[engine](
                   ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\pandas\io\excel\_openpyxl.py", line 553, in __init__
    super().__init__(
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\pandas\io\excel\_base.py", line 573, in __init__
    self.book = self.load_workbook(self.handles.handle, engine_kwargs)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\pandas\io\excel\_openpyxl.py", line 572, in load_workbook
    return load_workbook(
           ^^^^^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\openpyxl\reader\excel.py", line 465, in load_workbook
    reader = ExcelReader(filename, read_only, keep_vba,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\openpyxl\reader\excel.py", line 132, in __init__
    self.archive = _validate_archive(fn)
                   ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\LYS\AppData\Roaming\Python\Python312\site-packages\openpyxl\reader\excel.py", line 104, in _validate_archive
    archive = ZipFile(filename, 'r')
              ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python312\Lib\zipfile\__init__.py", line 1339, in __init__
    self._RealGetContents()
  File "C:\Program Files\Python312\Lib\zipfile\__init__.py", line 1406, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
  • 写回答

1条回答 默认 最新

  • 月下独码 Java领域新星创作者 2024-09-27 19:16
    关注

    以下内容源自超时代AI智能助手,仅供参考,可行性需要自行评估。

    1. 错误分析
      • 从报错信息zipfile.BadZipFile: File is not a zip file可以看出,pandas在使用openpyxl引擎读取Excel文件时,将文件当作ZipFile(因为xlsx文件本质上是Zip压缩包格式)来处理,但却发现这个文件不是一个合法的Zip文件。
      • 可能的原因有:
        • 文件路径错误:虽然打印出来的文件路径看起来正确,但可能存在隐藏字符或者文件实际上不存在于指定路径。
        • 文件损坏:Excel文件本身可能已损坏,导致无法被识别为有效的xlsx文件(因为xlsx基于Zip格式)。
    2. 解决方案
      • 检查文件路径和文件存在性
        • 使用os.path.exists函数来检查文件是否真正存在于指定路径。在代码开头添加如下代码:
          import os
          if not os.path.exists(file_input_path):
          print(f"The file {file_input_path} does not exist.")
          
        • 如果文件不存在,需要重新确认文件的实际位置并修正文件路径。
      • 检查文件是否损坏
        • 尝试在Excel软件(如Microsoft ExcelLibreOffice Calc)中打开该文件。如果文件无法打开或者提示文件损坏,那么需要重新获取一份未损坏的文件副本。
        • 如果文件可以在Excel软件中正常打开,但仍然报错,可以尝试将文件另存为新的xlsx文件,然后修改代码中的文件路径指向新保存的文件,再运行代码。例如:
          # 假设在Excel软件中另存为新文件到相同路径下,新文件名为new_file.xlsx
          new_file_path = r"C:\Users\LYS\Desktop\new_file.xlsx"
          data = pd.read_excel(new_file_path, header=None, engine='openpyxl')
          print(data)
          
      • 检查依赖库版本兼容性
        • 有时候pandasopenpyxl或者Python本身的版本问题也可能导致这种错误。可以尝试更新pandasopenpyxl到最新版本。
        • 在命令行中使用pip进行更新:
          pip install --upgrade pandas openpyxl
          
        • 如果使用Anaconda环境,可以使用conda进行更新:
          conda update pandas openpyxl
          
    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日

悬赏问题

  • ¥15 IEd中开关量采样信号通道设计
  • ¥45 字符串操作——数组越界问题
  • ¥15 Loss下降到0.08时不在下降调整学习率也没用
  • ¥15 QT+FFmpeg使用GPU加速解码
  • ¥15 为什么投影机用酷喵播放电影放一段时间就播放不下去了?提示发生未知故障,有什么解决办法吗?
  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥20 校园网认证openwrt插件
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
  • ¥15 求GCMS辅导数据分析