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脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
python3使用SMTP发送HTML格式邮件
Jun 19 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
pytorch ImageFolder的覆写实例
Feb 20 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
Mar 12 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
详解NumPy中的线性关系与数据修剪压缩
May 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生成不同颜色、不同大小的tag标签函数
2013/09/23 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP中$this和$that指针使用实例
2015/01/06 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
js中日期的加减法
2015/05/06 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
微信小程序定位当前城市的方法
2018/07/19 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
利用js-cookie实现前端设置缓存数据定时失效
2019/06/18 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
基于Electron实现桌面应用开发代码实例
2020/07/07 Javascript
每天迁移MySQL历史数据到历史库Python脚本
2018/04/13 Python
python入门:这篇文章带你直接学会python
2018/09/14 Python
python使用matplotlib画饼状图
2018/09/25 Python
Django+Xadmin构建项目的方法步骤
2019/03/06 Python
Python数据报表之Excel操作模块用法分析
2019/03/11 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
Python中的流程控制详解
2021/02/18 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
党员党性分析材料
2014/02/17 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
Golang 遍历二叉树
2022/04/19 Golang