Python读取excel中的图片完美解决方法


Posted in Python onJuly 27, 2018

excel中有图片是很常见的,但是通过python读取excel中的图片没有很好的解决办法。

网上找了一种很聪明的方法,原理是这样的:

1、将待读取的excel文件后缀名改成zip,变成压缩文件。

2、再解压这个文件。

3、在解压后的文件夹中,就有excel中的图片。

4、这样读excel中的图片,就变成了读文件夹中的图片了,和普通文件一样,可以做各种处理。

解压后的压缩包如下:

Python读取excel中的图片完美解决方法

python脚本如下:

'''
 File Name:  readexcelimg
 Author:   tim
 Date:    2018/7/26 19:52
 Description: 读取excel中的图片,打印图片路径
   先将excel转换成zip包,解压zip包,包下面有文件夹存放了图片,读取这个图片
 ''' 
 import os
 import zipfile
 # 判断是否是文件和判断文件是否存在
 def isfile_exist(file_path):
   if not os.path.isfile(file_path):
     print("It's not a file or no such file exist ! %s" % file_path)
     return False
   else:
     return True
 # 修改指定目录下的文件类型名,将excel后缀名修改为.zip
 def change_file_name(file_path, new_type='.zip'):
   if not isfile_exist(file_path):
     return ''
   extend = os.path.splitext(file_path)[1] # 获取文件拓展名
   if extend != '.xlsx' and extend != '.xls':
     print("It's not a excel file! %s" % file_path)
     return False
   file_name = os.path.basename(file_path) # 获取文件名
   new_name = str(file_name.split('.')[0]) + new_type # 新的文件名,命名为:xxx.zip
   dir_path = os.path.dirname(file_path) # 获取文件所在目录
   new_path = os.path.join(dir_path, new_name) # 新的文件路径
   if os.path.exists(new_path):
     os.remove(new_path)
   os.rename(file_path, new_path) # 保存新文件,旧文件会替换掉
   return new_path # 返回新的文件路径,压缩包
 # 解压文件
 def unzip_file(zipfile_path):
   if not isfile_exist(zipfile_path):
     return False
   if os.path.splitext(zipfile_path)[1] != '.zip':
     print("It's not a zip file! %s" % zipfile_path)
     return False
   file_zip = zipfile.ZipFile(zipfile_path, 'r')
   file_name = os.path.basename(zipfile_path) # 获取文件名
   zipdir = os.path.join(os.path.dirname(zipfile_path), str(file_name.split('.')[0])) # 获取文件所在目录
   for files in file_zip.namelist():
     file_zip.extract(files, os.path.join(zipfile_path, zipdir)) # 解压到指定文件目录
   file_zip.close()
   return True
 # 读取解压后的文件夹,打印图片路径
 def read_img(zipfile_path):
   if not isfile_exist(zipfile_path):
     return False
   dir_path = os.path.dirname(zipfile_path) # 获取文件所在目录
   file_name = os.path.basename(zipfile_path) # 获取文件名
   pic_dir = 'xl' + os.sep + 'media' # excel变成压缩包后,再解压,图片在media目录
   pic_path = os.path.join(dir_path, str(file_name.split('.')[0]), pic_dir)
   file_list = os.listdir(pic_path)
   for file in file_list:
     filepath = os.path.join(pic_path, file)
     print(filepath)
 # 组合各个函数
 def compenent(excel_file_path):
   zip_file_path = change_file_name(excel_file_path)
   if zip_file_path != '':
     if unzip_file(zip_file_path):
       read_img(zip_file_path)
 # main
 if __name__ == '__main__':
   compenent('/Users/Desktop/test/people.xlsx')

总结

以上所述是小编给大家介绍的Python读取excel中的图片完美解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
实例讲解Python中的私有属性
Aug 21 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
在Mac下使用python实现简单的目录树展示方法
Nov 01 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
详解python中各种文件打开模式
Jan 19 Python
Flask和pyecharts实现动态数据可视化
Feb 26 Python
python中round函数如何使用
Jun 19 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
Jul 20 Python
用python对excel查重
Dec 07 Python
Python的collections模块真的很好用
Mar 01 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 #Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
Jul 27 #Python
对Tensorflow中的矩阵运算函数详解
Jul 27 #Python
python+influxdb+shell编写区域网络状况表
Jul 27 #Python
TensorFlow 合并/连接数组的方法
Jul 27 #Python
pytorch训练imagenet分类的方法
Jul 27 #Python
使用pytorch进行图像的顺序读取方法
Jul 27 #Python
You might like
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
php include和require的区别深入解析
2013/06/17 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
JQuery中clone方法复制节点
2015/05/18 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
python三元运算符实现方法
2013/12/17 Python
python实现bucket排序算法实例分析
2015/05/04 Python
Python基础入门之seed()方法的使用
2015/05/15 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
工程预算与管理应届生求职信
2013/10/06 职场文书
农村婚礼证婚词
2014/01/08 职场文书
《母亲的恩情》教学反思
2014/02/13 职场文书
岗位职责怎么写
2014/03/14 职场文书
终止劳动合同协议书
2014/04/14 职场文书
2014年家长学校工作总结
2014/11/20 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
乔迁新居祝福语
2019/11/04 职场文书
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python