超バイオ系

バイオウェット系がバイオバイオしていないブログ。 基本自分用のまとめ。

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)

わかってしまえば簡単だった。