matplotlib savefig()报错求助:显示文本需满足编码要求
解决matplotlib savefig()的ValueError问题
嘿,这个问题我之前也碰到过!其实是你的图片保存路径里包含了非ASCII字符(比如带重音的西班牙语字母、中文这类),而matplotlib对路径字符串的编码有要求:要么所有字符的ASCII码点都小于128,要么得用Unicode字符串来传递路径。结合你用raw_input()获取输入的情况,给你几个可行的解决方案:
将输入字符串解码为Unicode(Python 2环境)
因为raw_input()获取的是字节串,直接拼接路径会导致编码问题,你可以先把输入解码成Unicode:# 获取输入时直接解码为Unicode cualtes = raw_input().decode('utf-8') # 确保路径的所有部分都是Unicode格式 rutaaux = os.path.join(dirresoluc.decode('utf-8'), cualtes + u'.png') plt.savefig(rutaaux, dpi=1500)注意要同步处理
dirresoluc的编码,避免路径里的其他文件夹名带非ASCII字符。用pathlib处理路径(更推荐,Python 2/3兼容)
pathlib库能自动处理Unicode路径的编码问题,不用手动折腾:# Python 3直接导入,Python 2先安装pathlib2库再导入from pathlib2 import Path from pathlib import Path # 把文件夹路径转为Path对象 dir_path = Path(dirresoluc) # 直接拼接生成完整路径 rutaaux = dir_path / f"{cualtes}.png" # 传入savefig即可 plt.savefig(rutaaux, dpi=1500)临时应急方案:替换非ASCII字符
如果你不想改编码逻辑,可以把cualtes里的非ASCII字符换成ASCII等价字符(比如把á换成a,ñ换成n),但这个方案不够灵活,只适合简单场景。
另外别忘了检查dirresoluc路径里有没有非ASCII字符,比如包含特殊符号或非英语的文件夹名,这些也可能触发同样的错误,记得一起处理哦!
内容的提问来源于stack exchange,提问作者Daniel Jose Carrillo Herrera
相关产品推荐
相关产品推荐

