python書き込みcsv乱符号化問題解決方法

1574 ワード

需要背景
最近、会社のためにメール日報プログラムを開発しました.メールは一般的に表、画像、それから添付ファイルです.添付ファイルは一般的にデフォルトで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)


注意:文字化けしのための3つの言葉があります

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

ファイルヘッダにcodecsを書き込む.BOM_UTF 8は文字化けしを防ぐことができて、ファイルはすべてutf-8符号化フォーマットのです
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!