python 写入csv乱码问题解决方法


Posted in Python onOctober 23, 2016

需求背景

最近为公司开发了一套邮件日报程序,邮件一般就是表格,图片,然后就是附件。附件一般都是默认写到txt文件里,但是PM希望邮件里的附件能直接用Excel这种软件打开,最开始想保存为Excel,但是一想Excel的文件体积会多出好多倍,csv文件默认也是使用Excel打开的,但是根本还是文本文件,体积小,保存也方便,于是最终决定使用csv模块来保存文件。

Python写csv文件

Python提供了内置模块读写csv文件,这里我只用到了写,读这里就不做介绍了,也不难,主要是解决乱码问题。

def save2csv(file_name=None, header=None, data=None):
"""
保存成CSV格式文件,方便Excel直接打开
:param file_name: 保存的文件名
:param header: 表头,每一列的名字
:param data: 具体填充数据
:return:
"""
if file_name is None or isinstance(file_name, basestring) is False:
raise Exception('保存CSV文件名不能为空,并且必须为字符串类型')
if file_name.endswith('.csv') is False:
file_name += '.csv'
file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)
if data is None or isinstance(data, (tuple, list)) is False:
raise Exception('保存CSV文件失败,数据为空或者不是数据类型')
if header is not None and isinstance(header, (tuple, list)) is True:
writer.writerow(header)
for row in data:
writer.writerow(row)

注意:有三句话就是为了防止乱码的

file_obj = open(file_name, 'wb')
file_obj.write(codecs.BOM_UTF8) # 防止乱码
writer = csv.writer(file_obj)

在文件头部写入codecs.BOM_UTF8就能防止乱码了,文件都是utf-8编码格式的

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
python文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
python实现的一个p2p文件传输实例
Jun 04 Python
python3中set(集合)的语法总结分享
Mar 24 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
让代码变得更易维护的7个Python库
Oct 09 Python
Face++ API实现手势识别系统设计
Nov 21 Python
django框架防止XSS注入的方法分析
Jun 21 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
python实现输入的数据在地图上生成热力图效果
Dec 06 Python
增大python字体的方法步骤
Jul 05 Python
python时间time模块处理大全
Oct 25 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 #Python
python 读写txt文件 json文件的实现方法
Oct 22 #Python
Python类属性的延迟计算
Oct 22 #Python
如何在Python函数执行前后增加额外的行为
Oct 20 #Python
如何利用Fabric自动化你的任务
Oct 20 #Python
windows下ipython的安装与使用详解
Oct 20 #Python
Python做文本按行去重的实现方法
Oct 19 #Python
You might like
PHP安全配置
2006/10/09 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
一个js实现的所谓的滑动门
2007/05/23 Javascript
asp 取文本框名称代码
2008/12/02 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
理解javascript模块化
2016/03/28 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
js与jquery获取input输入框中的值实例讲解
2020/02/27 jQuery
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
python实现bucket排序算法实例分析
2015/05/04 Python
pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换
2020/01/13 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
UNIX文件系统常用命令
2012/05/25 面试题
国培教师自我鉴定
2014/02/12 职场文书
人事任命书格式
2014/06/05 职场文书
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
退休教师追悼词
2015/06/23 职场文书
ubuntu安装jupyter并设置远程访问的实现
2022/03/31 Python