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写CUDA程序的方法
Mar 27 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
python实现汉诺塔算法
Mar 01 Python
在python中实现强制关闭线程的示例
Jan 22 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
浅析python标准库中的glob
Mar 13 Python
Python持续监听文件变化代码实例
Jul 22 Python
Python打印不合法的文件名
Jul 31 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
一个取得文件扩展名的函数
2006/10/09 PHP
第九节--绑定
2006/11/16 PHP
PHP程序员编程注意事项
2008/04/10 PHP
php中的数组操作函数整理
2008/08/18 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php获取文件名后缀常用方法小结
2015/02/24 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
js客户端快捷键管理类的较完整实现和应用
2010/06/08 Javascript
根据选择不同的下拉值出现相对应的文本输入框
2013/08/01 Javascript
jquery如何实现在加载完iframe的内容后再进行操作
2013/09/10 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
js电话号码验证方法
2015/09/28 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
2015/10/29 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python 专题三 字符串的基础知识
2017/03/19 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
分析Python中解析构建数据知识
2018/01/20 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
Python 如何提高元组的可读性
2019/08/26 Python
你们项目是如何进行变更控制的
2015/08/26 面试题
团日活动策划书
2014/02/01 职场文书
节水宣传标语口号
2015/12/26 职场文书
python基础详解之if循环语句
2021/04/24 Python
Python 内置函数速查表一览
2021/06/02 Python
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers