冰菲 发表于 2023-6-26 14:17:16

python代码一直运行正常,突然就报错,帮忙看下咋回事

path='C:/Users/EDY/Desktop/无密文件'
files_list=os.listdir(path)    #获取目标文件夹内各文件的名称
new_wb=Workbook()    #新建表格
new_ws=new_wb.active    #获取工作簿
for file in files_list:    #循环获取各表的名称
    file_path=path+'/'+file    #获取表格的路径
    wb=load_workbook(file_path)    #打开表格
    ws=wb.active    #打开工作簿
    for row in ws.iter_rows(min_row=15,values_only=True):    #循环获取表头以外的表格内容,从第15行开始
      new_ws.append(row)    #获取的内容写入新表
for i in range(2,new_ws.max_row,1):   #从第2行开始到最后一行逐行进行#删除指定文字
    if new_ws.cell(row=i,column=1).value=='保单号':   #如果该行第一列值为‘序号’
      new_ws.delete_rows(i)   #则删除该行
new_wb.save("最终完整版/1(多工作簿合并一个工作表) .xlsx")    #保存表格
print('------一、多工作簿合并一个工作表')



上面是我的代码,下面是报错的,之前代码一直运行正常,最近不知怎么回事,突然报错,帮忙看一下原因

File "c:\Users\EDY\Desktop\python\最终完整版\最终完整版第三版(无密码直接出台账) copy.py", line 30, in <module>
    wb=load_workbook(file_path)    #打开表格
       ^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\EDY\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 344, in load_workbook   
    reader = ExcelReader(filename, read_only, keep_vba,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\EDY\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 123, in __init__      
    self.archive = _validate_archive(fn)
                   ^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\EDY\AppData\Local\Programs\Python\Python311\Lib\site-packages\openpyxl\reader\excel.py", line 95, in _validate_archive
    archive = ZipFile(filename, 'r')
            ^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\EDY\AppData\Local\Programs\Python\Python311\Lib\zipfile.py", line 1299, in __init__
    self._RealGetContents()
File "C:\Users\EDY\AppData\Local\Programs\Python\Python311\Lib\zipfile.py", line 1366, in _RealGetContents
    raise BadZipFile("File is not a zip file")
zipfile.BadZipFile: File is not a zip file
PS C:\Users\EDY\Desktop\python>

歌者文明清理员 发表于 2023-6-26 14:21:03

本帖最后由 歌者文明清理员 于 2023-6-26 14:23 编辑

根据错误信息显示,报错内容为"zipfile.BadZipFile: File is not a zip file",意味着你尝试打开的文件不是一个有效的zip文件。

可能的原因是:


[*]文件路径错误:请确保你提供的file_path是正确的,并且指向一个存在的文件。

[*]文件格式错误:load_workbook()函数只能读取Excel文件(.xlsx、.xlsm、.xltx、.xltm),如果你提供的文件不是这些格式,会导致报错。


解决方法:


[*]确认文件路径:检查一下file_path的值,确保它指向了一个存在的文件。

[*]检查文件格式:确认你提供的文件是一个有效的Excel文件,可以尝试手动打开该文件并验证它的格式是否正确。


因为excel文件也是可以解压的
现在你检查一下,用7zip能不能解压excel文件,或者用offiec看看xlsx文件能不能正常打开

isdkz 发表于 2023-6-26 14:22:19

根据你的错误信息,这个错误产生的原因是Python在尝试打开一个Excel文件(使用openpyxl库的load_workbook函数)时,出现了问题。这个库期望文件是一个有效的.zip文件(实际上,.xlsx文件格式本质上就是一个.zip文件),但是在你的情况下,文件可能已经损坏,或者不是一个有效的.zip/.xlsx文件。

这个错误可能有以下原因:

1. 文件可能在读取过程中被其他程序(例如Excel)打开了。请确保在运行脚本时,没有其他程序打开这些文件。
2. 文件可能已经损坏。尝试手动打开文件看是否有问题,或者重新获取这个文件。
3. 你可能尝试打开的不是.xlsx文件。 os.listdir(path) 会返回所有的文件,包括非.xlsx文件。你可以添加一个检查以确保你只尝试打开.xlsx文件。下面是一种方式:

import os
from openpyxl import Workbook, load_workbook

path = 'C:/Users/EDY/Desktop/无密文件'
files_list = os.listdir(path)    #获取目标文件夹内各文件的名称
new_wb = Workbook()    #新建表格
new_ws = new_wb.active    #获取工作簿

for file in files_list:    #循环获取各表的名称
    if not file.endswith('.xlsx'):   #检查文件是否为.xlsx文件
      continue
    file_path = os.path.join(path, file)   #获取表格的路径
    wb = load_workbook(file_path)    #打开表格
    #...其他代码...

#...其他代码...


请尝试上述建议,并检查文件是否可以正常读取。

冰菲 发表于 2023-6-26 14:39:36

代码一直没变,之前运行都正常,突然不好使了,合并的工作簿也没坏,文件名字也是对的,这种我都核对了,都没问题,输入你的代码还是报错一样的代码

冰菲 发表于 2023-6-26 14:45:15

isdkz 发表于 2023-6-26 14:22
根据你的错误信息,这个错误产生的原因是Python在尝试打开一个Excel文件(使用openpyxl库的load_workbook函 ...

找到问题了,我把无密文件删除,重新建立一个文件夹就好使了,这个文件夹我没动过

沐雨尘枫 发表于 2023-7-8 16:40:01



请确保你指定的文件路径是正确的,并且文件是有效的 Excel 文件(通常以 .xlsx 或 .xls 扩展名结尾)。另外,你还可以尝试以下几点来解决该问题:

检查文件路径:确认文件路径是否正确,包括文件名、文件后缀名等。确保文件存在并且可以被访问。

检查文件格式:确保您的文件是有效的 Excel 文件(.xlsx 或 .xls 格式)。如果文件已损坏或者不是 Excel 文件格式,可能会导致无法打开并出现上述错误。

检查文件完整性:如果文件已损坏或不完整,也可能导致无法打开并出现错误。您可以尝试使用其他工具或方法打开该文件,以验证文件的完整性。
页: [1]
查看完整版本: python代码一直运行正常,突然就报错,帮忙看下咋回事