需求背景最近给公司开发了一套邮件日常程序,邮件一般是表格,图片,然后是附件。附件一般默认写成txt文件,但是PM希望邮件中的附件可以直接用Excel等软件打开。一开始,我想把它们保存成Excel,但是Excel的文件体积会大很多倍。csv文件默认是用excel打开的,但是基本都是文本文件,体积小,保存方便,所以最后还是决定使用csv模块来保存文件。Python写入csv文件Python提供了一个内置模块来读取和写入csv文件。这里我只用写法。这里就不介绍了。不难,主要是解决乱码问题。defsave2csv(file_name=None,header=None,data=None):"""保存为CSV文件,方便Excel直接打开:paramfile_name:保存的文件名:paramheader:文件头,每一列的名称:paramdata:具体填充数据:return:"""iffile_nameisNoneorisinstance(file_name,basestring)isFalse:raiseException('保存的CSV文件的名称不能为空,必须为astringtype')iffile_name.endswith('.csv')isFalse:file_name+='.csv'file_obj=open(file_name,'wb')file_obj.write(codecs.BOM_UTF8)#防止乱码writer=csv.writer(file_obj)ifdataisNoneorisinstance(data,(tuple,list))isFalse:raiseException('无法保存CSV文件,数据为空或不是数据类型')ifheaderisnotNoneandisinstance(header,(tuple,list))isTrue:writer.writerow(header)forrowindata:writer.writerow(row)注意:这里有三句防止乱码file_obj=open(file_name,'wb')file_obj.write(编解码器s.BOM_UTF8)#防止乱码writer=csv.writer(file_obj)通过在文件头写入codecs.BOM_UTF8可以防止乱码。文件都是utf-8编码格式。以上就是解决使用python生成csv乱码问题的详细内容。希望对您有所帮助。码字不易,点个赞吧,支持支持相关推荐:如何保护php代码的安全?Vue组件部分刷新WEB前端面试求职跳槽通关指南什么是php行为和事件?HTML5灵活框布局详解JS正则表达式(要求同时包含数字和字母,长度在6到20之间)vue时间插件jquery操作风格jq修改和添加css风格和class风格java面试题8最容易出错java可以对地图的键进行排序吗?阅读原文
