Python系列问题集05-相同代码写入excel文件时,python2.7.15报错,而python3.6.7处理成功

文章描述了在Python2.7.15环境下使用xlutils库写入多sheet到Excel时遇到的字符编码问题,导致脚本执行报错。而在Python3.6.7环境下则无此问题。经过分析,发现在写入新sheet时,编码格式不一致导致错误。通过修改UnicodeUtil.py文件,对utf-8编码进行特殊处理,解决了该问题,实现了多个环境检查结果成功写入不同sheet。
摘要由CSDN通过智能技术生成

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中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值