Pythonでファイルの文字コードを取得する方法です。
経緯
S3のファイルを読み込む時にデコードする必要があるのですが、文字コードがJ-JISだったりUFT-8だったりするので、文字コードを取得して分岐処理することにしました。
S3に格納されているファイルを読み込む(参考)
対応
コード
import chardet # S3からファイル取得 client = S3Client() object = client.get_object(S3上のパス) body = object["Body"].read() # 文字コードの判定 if chardet.detect(body).get("encoding") == "utf-8": # UTF-8 body = io.TextIOWrapper(io.BytesIO(body)) else: # UTF-8以外 body = io.TextIOWrapper(io.BytesIO(body),encoding="cp932") body.seek(0) ....
chardetを使えば、読み込んだファイル情報を取得することが出来ます。
読み込んだ情報にある、encoding に文字コードが入っています。