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实现的简单万年历例子分享
Apr 25 Python
Python中常见的数据类型小结
Aug 29 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
Jul 28 Python
Python模拟用户登录验证
Sep 11 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
对python指数、幂数拟合curve_fit详解
Dec 29 Python
Python多图片合并PDF的方法
Jan 03 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
最小二乘法及其python实现详解
Feb 24 Python
Python 实现国产SM3加密算法的示例代码
Sep 21 Python
python编程的核心知识点总结
Feb 08 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
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
2014/06/23 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP中使用Imagick实现各种图片效果实例
2015/01/21 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
JavaScript+HTML5实现的日期比较功能示例
2017/07/12 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
jquery实现两个div中的元素相互拖动的方法分析
2020/04/05 jQuery
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现2014火车票查询代码分享
2014/01/10 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
加拿大领先家居家具网上购物:Aosom.ca
2020/05/27 全球购物
SQL SERVER面试资料
2013/03/30 面试题
大学毕业生通用求职信
2013/09/28 职场文书
资产经营总监岗位职责范文
2013/12/01 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
五四演讲稿范文
2014/09/03 职场文书
责任书范本大全
2015/05/11 职场文书
搞笑婚庆主持词
2015/06/29 职场文书