os.walkでエラーが出た
pythonの話題。
なお環境はAnacondaで構築して、python3.5となっている。
普段使っていたスクリプトがファイル読み込みでエラーをはいたのでその原因を調べた。
pandasとかいう便利なやつ
データ分析する人なら御用達のpandas。
エクセルファイルを簡単に読み込める凄いやつ。
こいつで複数ファイルをループして読み込みまくろうとしたらことが起きた。
こいつのバージョンが問題なのではと色々調べたが、結局問題はもっと根本的なところにあった。
なんだかglobとかos.walkが怪しい…
細かい説明はすっ飛ばして結論を言うと、excelとかのofficeソフトって._XXXXXXって感じの隠しファイルを生成していて、Ubuntuはもれなく条件にヒットしたファイル名を拾ってしまう。
windowsではこれを自動で無視するらしくglobだろうがos.walkだろうが問題にならない。
この._XXXファイルが読めないよ!!ってエラーをはいていたのだった。
ありがた迷惑である。
.(ドット)で始まるファイルを除けばいい
ということで隠しファイルを除くサンプルスクリプトを書いた。
import os parentPath = 探したいディレクトリのパス for root, dirs, fnames in os.walk(parentPath): for fname in fnames: if not fname.startswith("."): print(fname)
わかってしまえば簡単だった。