今日は先に書いたコードから。「Pythonで日本語を使う」を参考に、Shift_JISで保存されている.datファイルを読み込んで、そのまま標準出力に出す。つもりだった。
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Shift_JISのファイルを読み込んで出力する。 ''' import sys import codecs fout = codecs.getwriter('shift_jis')(sys.stdout) log = codecs.open('1111198050.dat', 'r', 'shift_jis') # 実際にはフルパス for line in log: fout.write( line )
とりあえず、コンソールから実行してみたところ、途中までは問題なく出力されるのだが、ある行を処理するところで、エラーメッセージ。が出て中断 してしまう。
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 158-159: illegal multibyte sequence
引っかかっている文字は「㌧」。この手の文字は2ちゃんねるでは頻繁に使われるしなぁ。どうしたらいいんだろ?とりあずここ読んで勉強するわ。
追記
codecs.open()
のところで、'ignore'
オプションをつけてやれば、ファイルの最後までは処理されるようにはなった。けど、解決にはなってない。なってはいないけどここまでの経過として修正版
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' Shift_JISのファイルを読み込んで出力する。 ''' import sys import codecs fout = codecs.getwriter('shift_jis')(sys.stdout) log = codecs.open('1111198050.dat', 'r', 'shift_jis', 'ignore' ) print 'Content-Type: text/plain;charset;shift_jis' print for line in log: fout.write( line )
→実行結果がかつてはリンクされていました。