echarts python_Python+Echarts小例子报错,请教大神解答下?

在网上查了半天,加上调试,总算稀里糊涂地解决了,自答一波吧

1、首先定位到报错的地方

def _html(self):

with open(os.path.join(os.path.dirname(__file__), 'plot.j2')) as f:

template = f.read()

这里open的默认编码方式是cp936,查了下跟gbk差不多。打开plot.j2文件(位于Echarts安装目录下),结合报错的信息,发现可能是plot.j2文件中存在的中文字符造成的,于是将open的方式改为如下并再次运行:

with open(os.path.join(os.path.dirname(__file__), 'plot.j2'), encoding='utf-8') as f:

2、出现了新的错误:

File "D:\Program Files\Python\lib\site-packages\echarts\__init__.py", line 105, in plot

fobj.write(self._html())

File "D:\Program Files\Python\lib\tempfile.py", line 483, in func_wrapper

return func(*args, **kwargs)

TypeError: a bytes-like object is required, not 'str'

从错误的字面意思上看,需要输入的应该是字节,而不是str。所以这里需要将str编码后再进行输入,考虑将write改为如下:

fobj.write(self._html().encode('utf-8'))

此时再运行,例子终于编过了,结果图是在浏览器中打开的

3、总结

错误的原因就在于plot.j2文件中含有的中文字符,只需要指定编码格式为utf-8就OK了(好像这个错误在python2.x版本不会报错。。)另外PyCharm挺好用的,在调试的时候帮助定位了plot.j2文件的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值