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的web.py框架下的application.py模块
May 02 Python
Python分治法定义与应用实例详解
Jul 28 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
Python3 Random模块代码详解
Dec 04 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
Python爬虫框架Scrapy常用命令总结
Jul 26 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
Python模块的制作方法实例分析
Dec 21 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
总结python多进程multiprocessing的相关知识
Jun 29 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
简单的过滤字符串中的HTML标记
2006/12/25 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
理解JavaScript中的事件
2006/09/23 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery实现鼠标划过添加和删除class的方法
2015/06/26 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
详解angularJs指令的3种绑定策略
2017/04/13 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
vue-cli如何添加less 以及sass
2017/07/06 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[01:37]全新的一集《真视界》——TI7总决赛
2017/09/21 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
python中的装饰器该如何使用
2021/06/18 Python