当前位置:天才代写 > tutorial > Python教程 > python 生成csv乱码问题办理要领

python 生成csv乱码问题办理要领

2017-11-02 08:00 星期四 所属: Python教程 浏览:439

需求配景

最近为公司开拓了一套邮件日报措施,邮件一般就是表格,图片,然后就是附件。附件一般都是默认写到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编码名目标

 

    关键字:

天才代写-代写联系方式