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错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
示例详解Python3 or Python2 两者之间的差异
Aug 23 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
Python List cmp()知识点总结
Feb 18 Python
Pycharm运行加载文本出现错误的解决方法
Jun 27 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
Dec 11 Python
logging level级别介绍
Feb 21 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
python爬虫实例之获取动漫截图
May 31 Python
Python用Jira库来操作Jira
Dec 28 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 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类
2006/10/09 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP实现基于文本的摩斯电码生成器
2016/01/11 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
2012/02/03 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
JavaScript中Window对象的属性及事件
2015/12/25 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
react脚手架如何配置less和ant按需加载的方法步骤
2018/11/28 Javascript
JavaScript进阶(二)词法作用域与作用域链实例分析
2020/05/09 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
Python脚本实现虾米网签到功能
2016/04/12 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
解读python logging模块的使用方法
2018/04/17 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
Keras自定义实现带masking的meanpooling层方式
2020/06/16 Python
如何教少儿学习Python编程
2020/07/10 Python
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
最好的商品表达自己:Cafepress
2019/09/04 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
数控技术专业推荐信
2013/11/01 职场文书
中学劳技课教师的自我评价
2014/02/05 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
天那边观后感
2015/06/09 职场文书
《大禹治水》教学反思
2016/02/22 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL