python書き込みcsv乱符号化問題解決方法
1574 ワード
需要背景
最近、会社のためにメール日報プログラムを開発しました.メールは一般的に表、画像、それから添付ファイルです.添付ファイルは一般的にデフォルトでtxtファイルに書かれていますが、PMはメールの添付ファイルが直接Excelというソフトで開くことを望んでいます.最初はExcelに保存したいと思っていましたが、Excelのファイルの体積が何倍もあると思うと、csvファイルのデフォルトもExcelで開いていますが、根本的にはテキストファイルで、体積が小さく、保存も便利です.そこで最終的にcsvモジュールを使用してファイルを保存することにした.
Pythonはcsvファイルを書きます
Pythonは内蔵モジュールの読み書きcsvファイルを提供しています.ここでは書くだけです.ここを読むと紹介しません.難しくありません.主に文字化けして問題を解決します.
注意:文字化けしのための3つの言葉があります
ファイルヘッダにcodecsを書き込む.BOM_UTF 8は文字化けしを防ぐことができて、ファイルはすべてutf-8符号化フォーマットのです
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!
最近、会社のためにメール日報プログラムを開発しました.メールは一般的に表、画像、それから添付ファイルです.添付ファイルは一般的にデフォルトで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符号化フォーマットのです
読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!