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实现简单的TCP代理服务器
Oct 08 Python
Python实现数通设备端口使用情况监控实例
Jul 15 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
May 18 Python
Python实现爬虫爬取NBA数据功能示例
May 28 Python
python3写的简单本地文件上传服务器实例
Jun 04 Python
python输出带颜色字体实例方法
Sep 01 Python
python模拟实现斗地主发牌
Jan 07 Python
Python控制台实现交互式环境执行
Jun 09 Python
python 实现Requests发送带cookies的请求
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
php实现二进制和文本相互转换的方法
2015/04/18 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
Ajax::prototype 源码解读
2007/01/22 Javascript
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
jquery统计复选框选中示例
2013/11/05 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
javascript实现动态标签云
2015/10/16 Javascript
JavaScript+html5 canvas绘制的小人效果
2016/01/27 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
python计算最大优先级队列实例
2013/12/18 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
Python装饰器用法实例总结
2018/02/07 Python
python3调用R的示例代码
2018/02/23 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
python 中xpath爬虫实例详解
2019/08/26 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
公司离职证明标准格式
2014/11/18 职场文书
八年级英语教学反思
2016/02/15 职场文书
怎样写好工作计划
2019/04/10 职场文书
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/04/22 无线电
Python天气语音播报小助手
2021/09/25 Python
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技