1、环境说明
操作系统:windows10
python版本:2.7.15和3.6.7
组件:xlutils chardet
2、功能需求
使用python将现有检查项结果写入到excel中,不同环境写入到不同的sheet中。
下图是调用excel写入函数:
下图是excel处理逻辑,判断文件是否存在,不存在则新建,判断sheet是否存在,不存在则新增。
3、问题描述
当使用python2.7.15版本时候,只写入一个环境的检查结果正常,当2个+环境先后写入不同的sheet中,脚本执行报错。如下图:
根据提示意思是字符编码不正确,但是我只写入一个环境巡检结果是正常没有报错,当写入多个sheet存在报错。
而使用python3.6.7版本执行时候不报错如下图:
4、解决方法
原因分析:
代码不变情况下,python版本不同执行结果不同,python2.7.15出现报错信息“字符编码问题”,但是当只写入一个sheet时候不存在报错,于是猜测为当写入1个sheet保存后,再打开excel后,再写入新的sheet时报错。
于是,点开报错函数如下:
添加打印日志查看那个地方出现这个错误:
发现不报错的地方和报错的地方区别为一个时ascii编码,1个时utf-8编码,如下:
于是计划调整该部分逻辑,修改site-packages里面UnicodeUtil.py文件处理逻辑,对此种情况特殊处理。
如果是utf-8格式,则不需执行unicode(s, encoding)函数处理,直接将结果赋值。
发现执行成功。多个环境检查结果能够成功写入到excel的不同sheet中。