はじめに
最近、Android端末でセンサデータを収集し、それをPythonをもちいてJSON形式からCSV形式に変換してデータ整形をする、なんて機会がとても多くなってきました。
そこで、とあるエラーに嵌ってしまったので、備忘録としてメモを残しておきます。
発生したエラー
UnicodeDecodeError: '****' codec can't decode byte 0x** in position **:
このエラーをみると、CSVに何かおかしな文字が混ざってしまっているのか、それとも下記のコードに不備があるのかと思いました。
しかし、今回に限ってはそうではありませんでした。
with open(path, encoding="***")
該当するコードスニペット
dir = os.getcwd() + "/" + folder
files = os.listdir(dir)
このコードは、とあるフォルダに存在するファイルをリスト形式で返すことができるものです。
このコードを使って、大量のJSONファイルやCSVファイルをリスト形式で扱おうとしておりました。
原因
.が先頭についているファイル、いわゆる隠れファイルがリストに含まれてしまうことが原因でした。
自環境の場合、「.DS_Store」がリストに含まれていました。
さいごに
もし同じようなエラー(沼)に嵌ってしまった方がいれば、隠しファイルなど”本来扱いたくないファイル”を誤って読み込んでいないか確認することをおすすめします。