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+Opencv识别两张相似图片
Mar 23 Python
在python中使用正则表达式查找可嵌套字符串组
Oct 24 Python
基于循环神经网络(RNN)的古诗生成器
Mar 26 Python
python判断一个集合是否为另一个集合的子集方法
May 04 Python
基于python二叉树的构造和打印例子
Aug 09 Python
在django模板中实现超链接配置
Aug 21 Python
使用Python实现分别输出每个数组
Dec 06 Python
Django自关联实现多级联动查询实例
May 19 Python
Python2及Python3如何实现兼容切换
Sep 01 Python
python中实现栈的三种方法
Dec 19 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
OpenCV-Python实现轮廓拟合
Jun 08 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 地址栏信息的获取代码
2009/01/07 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP编写简单的App接口
2016/08/28 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
详解php中的implements 使用
2017/06/13 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
vue的安装及element组件的安装方法
2018/03/09 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python实用日期时间处理方法汇总
2015/05/09 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Python cookbook(字符串与文本)针对任意多的分隔符拆分字符串操作示例
2018/04/19 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python多线程同步实例教程
2019/08/11 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
电大会计学自我鉴定
2014/02/06 职场文书
交通工程专业推荐信
2014/09/06 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书