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: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文件能不能正常打开 根据你的错误信息,这个错误产生的原因是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) #打开表格
#...其他代码...
#...其他代码...
请尝试上述建议,并检查文件是否可以正常读取。 代码一直没变,之前运行都正常,突然不好使了,合并的工作簿也没坏,文件名字也是对的,这种我都核对了,都没问题,输入你的代码还是报错一样的代码 isdkz 发表于 2023-6-26 14:22
根据你的错误信息,这个错误产生的原因是Python在尝试打开一个Excel文件(使用openpyxl库的load_workbook函 ...
找到问题了,我把无密文件删除,重新建立一个文件夹就好使了,这个文件夹我没动过
请确保你指定的文件路径是正确的,并且文件是有效的 Excel 文件(通常以 .xlsx 或 .xls 扩展名结尾)。另外,你还可以尝试以下几点来解决该问题:
检查文件路径:确认文件路径是否正确,包括文件名、文件后缀名等。确保文件存在并且可以被访问。
检查文件格式:确保您的文件是有效的 Excel 文件(.xlsx 或 .xls 格式)。如果文件已损坏或者不是 Excel 文件格式,可能会导致无法打开并出现上述错误。
检查文件完整性:如果文件已损坏或不完整,也可能导致无法打开并出现错误。您可以尝试使用其他工具或方法打开该文件,以验证文件的完整性。
页:
[1]