需求背景

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

Python写csv文件

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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, basestringis 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, (tuplelist)) is False:
raise Exception('保存CSV文件失败,数据为空或者不是数据类型')
if header is not None and isinstance(header, (tuplelist)) is True:
writer.writerow(header)
for row in data:
writer.writerow(row)

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

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

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

python 生成csv乱码问题解决方法的更多相关文章

  1. php读取csv乱码问题解决方法

    <form action="erxian_cy.php" method="post" enctype="multipart/form-data& ...

  2. python3 库pandas写入csv格式文件出现中文乱码问题解决方法

    python3 库pandas写入csv格式文件出现中文乱码问题解决方法 解决方案: 问题是使用pandas的DataFrame的to_csv方法实现csv文件输出,但是遇到中文乱码问题,已验证的正确 ...

  3. WingIDE中文乱码问题解决方法

    WingIDE中文乱码问题解决方法 安装完WingIDE后,首次运行python脚本时,若脚本中含有UTF-8中文,在Debug I/O输出框中,全部变成了乱码. 这时其实我们设置下WingIDE的编 ...

  4. Python爬虫编程常见问题解决方法

    Python爬虫编程常见问题解决方法: 1.通用的解决方案: [按住Ctrl键不送松],同时用鼠标点击[方法名],查看文档 2.TypeError: POST data should be bytes ...

  5. 【转】asp.net Cookie值中文乱码问题解决方法

    来源:脚本之家.百度空间.网易博客 http://www.jb51.net/article/34055.htm http://hi.baidu.com/honfei http://tianminqia ...

  6. soapUI参数中文乱码问题解决方法 (groovy脚本中文乱码)

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

  7. Java中FTPClient上传中文目录、中文文件名乱码问题解决方法【好用】

    转: Java中FTPClient上传中文目录.中文文件名乱码问题解决方法 问题描述: 使用org.apache.commons.net.ftp.FTPClient创建中文目录.上传中文文件名时,目录 ...

  8. LoadRunner中文乱码问题解决方法

    LoadRunner中文乱码问题解决方法 前段时间在录制,增强,整合LoadRunner脚本,期间两次遇到了中文乱码问题.在此记录一下中文乱码问题的解决办法. 一.录制回放中文乱码 我录制登陆的脚本, ...

  9. soapUI参数中文乱码问题解决方法&soap UI工具进行web接口测试

    soapUI参数中文乱码问题解决方法 可能方案1: 字体不支持中文,将字体修改即可: file-preferences-editor settings-select font 修改字体,改成能显示中文 ...

随机推荐

  1. 跨交换机的VLAN划分实验

    实验涉及命令以及知识补充 大部分命令和上一篇相同,本篇介绍不同的收获. 上一篇链接: https://www.cnblogs.com/Coeus-P/p/9122462.html 退出命令 ctrl+ ...

  2. Swift 中关于”??”操作符

    Swift 中关于”??”操作符 Swift 的语法在保证安全和健壮的基础上,又带有很多非常灵活的特性,比如 ?? 操作符就是其中一个.大家可能已经了解它,也可能有些同学不了解它,这里给大家整理了关于 ...

  3. P3818 小A和uim之大逃离 II(bfs,有条件的广搜)

    题目背景 话说上回……还是参见 https://www.luogu.org/problem/show?pid=1373 吧 小a和uim再次来到雨林中探险.突然一阵南风吹来,一片乌云从南部天边急涌过来 ...

  4. Percona-Tookit工具包之pt-visual-explain

      Preface       As usual we will check the MySQL executed plan of SQL query by execute "explain ...

  5. 添加fileinfo扩展

    首先声明:笔者用的是军哥的lnmp一键安装包!链接地址:https://lnmp.org 打开upgrade_php.sh配置文件[文件所在位置:~/lnmp1.4/include/upgrade_p ...

  6. PHP判断URL地址百度是否已经收录并主动提交MIP数据

    /** * PHP检测URL地址百度是否已经收录 * @param string $url 要检测的URL地址 */ function Baidu($url) { $url = 'http://www ...

  7. python函数的返回值

    返回值:return1.没有返回值    #不写return    #只写return:结束一个函数    #return None2.有一个返回值    #可以返回任何数据类型    #只要返回就可 ...

  8. Leecode刷题之旅-C语言/python-101对称二叉树

    /* * @lc app=leetcode.cn id=101 lang=c * * [101] 对称二叉树 * * https://leetcode-cn.com/problems/symmetri ...

  9. STL——list

    1.关键概述 list 是定义在 namespace::std 的模板,声明在 <list> ,存储结构是 双向链表, 提供的 正向和反向迭代器. 2.构造list对象 list<i ...

  10. 微信公众号--JS-SDK

    JS-SDK 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以 ...