CSVファイルを文字コード UTF-8で作ると
Excelで読み込んだ時に文字化けする。
文字化けさせないためには先頭にBOMを付ける必要がある。
bom.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
# BOMを出力する
sys.stdout.buffer.write(b'\xEF\xBB\xBF')
# CSVを出力する
print ('ID,名前')
print ('1,山田')
print ('2,田中')
print ('3,坂本')
これで
./bom.py > excel.csv
と実行するとExcelで文字化けしないCSVファイル(excel.csv)が生成される。