自動的にエンコード及びデコードを行う

codecsモジュールを使うと、自動的にエンコードやデコードを行ってくれるファイルオブジェクトを得ることができます。

新しく開くファイル

import codecs

# 自動的にエンコード・デコードを行うファイルオブジェクトを生成
f1 = codecs.open("utf-8.txt", "r", "utf-8" )
f2 = codecs.open("sjis.txt", "w", "shift_jis") 

for line in f1:    # Unicode文字列に変換して読み込む
    f2.write(line) # shift_jisのバイト列に変換して書き込む

f1.close()
f2.close()

既に開いているファイル

import sys, codecs

# 標準入力のエンコーディングをEUC-JPに変更、
# データを読み込む際に、自動的にエンコードを行う
sys.stdin = codecs.getreader("euc_jp")(sys.stdin)

# 標準出力のエンコーディングをUTF-8に変更
# データを書き込む際に、自動的にデコードを行う
sys.stdout = codecs.getwriter("utf_8")(sys.stdout)

for line in sys.stdin:
    print line,