Makoでshift_jisの文字列をバインディング

shift_jisで書かれたcsvを読んでバインディングしていくときは、こんな感じ。

def create_by_mako(csv_file, tmpl_file):
    import mako.template
    tmpl = mako.template.Template(filename=tmpl_file, output_encoding='shift_jis', default_filters=['decode.shift_jis'])
    import csv
    reader = csv.reader(open(csv_file, "rb"))
    for row in reader:
        f = open(row[0] + '.html', 'w')
        f.write(tmpl.render(**{'title':row[1], 'status':row[2], 'detail':row[3], 'transit': row[4]}))
        f.close()

renderで値を渡すときに個々のrow[1]とかしてるところを

unicode(row[1], 'shift_jis')

とかしてもいけるみたいだ*1けど、全部同じエンコードなら、

tmpl = mako.template.Template(filename=tmpl_file, output_encoding='shift_jis', default_filters=['decode.shift_jis'])

として、デフォルトを設定したほうがラク。
MakoかわいいよMako

*1:けど、うまくいかんかった。理解できてないなー