試験が細かく行われていないWebアプリケーションのログファイルって、一部の行が文字化けしていることがありますよね(アプリケーションが出力しているエラーメッセージなど)。
このようなログファイルから統計情報などを取ろうとして、ログファイルをPythonで読み込もうとすると、案の定、文字化けしている行で「デコードできない」という例外が発生してしまいます。
あと、突然知らないシステムのログを渡されて解析を依頼された時など、一見普通の行に見えるのに何故かPyhonで読み込むと「デコードできない」というエラーが発生する場合もあります。この場合はログファイルの文字コードなどを丹念に調査するという方法もありますが、解析と関係ない行ならば発生するエラーに対処している時間が無いこともあります。
そこで、ファイルを open する際に、引数にパラメータ「errors='replace'
」を指定すると、文字化けしている箇所(デコードに失敗した箇所)は「?」に置換して読み込んでくれます。
f = open('foo.log', mode='r', errors='replace')
ログから統計情報を集計したいけど、デコードエラーの処理を書く時間が無い時などお試し下さい。
それでは、良い Python ライフを!!