Maison  >  Article  >  développement back-end  >  Solution au problème de l'utilisation de Python pour générer des caractères CSV tronqués

Solution au problème de l'utilisation de Python pour générer des caractères CSV tronqués

高洛峰
高洛峰original
2017-03-16 16:11:401573parcourir

Contexte de la demande

Récemment, nous avons développé un programme de courrier électronique quotidien pour l'entreprise. Les e-mails sont généralement des formulaires, des images, puis des pièces jointes. Les pièces jointes sont généralement écrites par défaut dans des fichiers txt, mais le Premier ministre espère que les pièces jointes de l'e-mail pourront être ouvertes directement avec un logiciel tel qu'Excel. Au début, il voulait les enregistrer au format Excel, mais lorsqu'il a pensé que la taille du fichier était de 100 $. Excel serait plusieurs fois plus volumineux, le fichier csv était par défaut. Il a également été ouvert avec Excel, mais il s'agissait toujours d'un fichier texte. Il était de petite taille et facile à enregistrer, j'ai donc finalement décidé d'utiliser le module csv pour enregistrer le fichier.

PythonÉcrire des fichiers csv

Python fournit un module intégré pour lire et écrire des fichiers csv Ici, j'utilise uniquement l'écriture, je ne le présenterai pas ici. n'est pas difficile, principalement pour résoudre le problème de code tronqué.

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)

Remarque : Il y a trois phrases pour éviter les caractères tronqués.

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

L'écriture de codecs.BOM_UTF8 dans l'en-tête du fichier peut empêcher les caractères tronqués. Les fichiers sont tous utf-. 8 encodé. Format

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn