| 
 | 
 
 
 楼主 |
发表于 2023-2-11 08:32:50
|
显示全部楼层
 
 
 
 
你这个是写入,读取的话怎么搞,昨天我网上找了一下类似情况的,也是用zipfile压缩后,去xl\media下找图片,但是压缩是成功了,但是提取图片出问题了,这是网上的,我就是修改了一下路径,然后就报错了。报错内容Traceback (most recent call last): 
  File "C:\Users\Administrator\Desktop\新建文本文档.py", line 31, in <module> 
    img = Image.open(f) 
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python311\Lib\site-packages\PIL\Image.py", line 3283, in open 
    raise UnidentifiedImageError(msg) 
PIL.UnidentifiedImageError: cannot identify image file <zipfile.ZipExtFile name='xl/media/' mode='r' 
希望大佬指点一下 
- import os
 
 - import zipfile
 
 - import os
 
 - from PIL import Image
 
 - import numpy as np 
 
 - path = r'C:/Users/Administrator/Desktop/'
 
 - count = 1
 
 - for file in os.listdir(path):
 
 -     new_file = file.replace(".xlsx",".zip")
 
 -     os.rename(os.path.join(path,file),os.path.join(path,new_file))
 
 -     count+=1
 
 - print('总共有'+str(count)+'个文件夹')
 
 - number = 0
 
 - craterDir = "C:/Users/Administrator/Desktop/"  # 存放zip文件的文件夹路径
 
 - saveDir = "C:/Users/Administrator/Desktop/"  # 存放图片的路径 
 
 - list_dir = os.listdir(craterDir) 
 
 - for i in range(len(list_dir)):
 
 -     if 'zip' not in list_dir[i]:
 
 -         list_dir[i] = ''
 
 - while '' in list_dir:
 
 -     list_dir.remove('')    
 
 - for zip_name in list_dir:
 
 -     print(zip_name)
 
 -     azip = zipfile.ZipFile(craterDir + zip_name)
 
 -     namelist = (azip.namelist())
 
 -  
 
 -     for idx in range(0,len(namelist)):
 
 -         if namelist[idx][:9] == 'xl/media/':#图片是在这个路径下
 
 -             img_name = saveDir + str(number)+'.jpg'
 
 -             f = azip.open(namelist[idx],'r')
 
 -             img = Image.open(f)
 
 -             img = img.convert("RGB")
 
 -             img.save(img_name,"JPEG")
 
 -             number += 1
 
 - azip.close()  #关闭文件,必须有,释放内存
 
 
  复制代码 |   
 
 
 
 |