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中编写数据库模块的教程
Apr 29 Python
Python解析json文件相关知识学习
Mar 01 Python
Python 文件处理注意事项总结
Apr 10 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
Jupyter notebook远程访问服务器的方法
May 24 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
python自动化测试三部曲之request+django实现接口测试
Oct 07 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
python函数超时自动退出的实操方法
Dec 28 Python
基于Python的接口自动化读写excel文件的方法
Jan 15 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 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下实现折线图效果的代码
2007/04/28 PHP
PHP生成带有雪花背景的验证码
2008/09/28 PHP
php curl选项列表(超详细)
2013/07/01 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
Jquery实现的tab效果可以指定默认显示第几页
2013/10/16 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
javascript中取前n天日期的两种方法分享
2014/01/26 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
解决Angular.Js与Django标签冲突的方案
2016/12/20 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
js时间戳与日期格式之间相互转换
2017/12/11 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
vue scroll滚动判断的实现(是否滚动到底部、滚动方向、滚动节流、获取滚动区域dom元素)
2020/06/11 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
python开根号实例讲解
2020/08/30 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
护士自我评价
2014/02/01 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL