読者です 読者をやめる 読者になる 読者になる

或阿呆のブログ

Pythonを好んで使っているプログラマです。Ruby,Perl,PowerShell,VBAなどでもたまに書いています。おバカなことが大好きです。

フォルダの存在確認

Python

フォルダの存在有無を確認をしたくて必要性に駆られて調べてみた。ただし、環境はWindows限定ということで。UNIX/Linux系ならもっと便利なんだろうけど・・・。

前提条件

  • "C\bin"というフォルダが存在する。(フルパス)
  • "C:\bin\hoge.txt"というファイルが存在する。(フルパス)

MS-DOS

ファイルかフォルダかを問わないなら・・・

C:\bin>if exist "C\bin" echo "True"

C:\bin>if exist "C:\bin\hoge.txt" echo True
True

で出来る。

フォルダかどうかを調べるには、けっこう泥臭いことをやらないといけないっぽい。
MS-DOSでファイルかディレクトリかをチェックしたい - Windows Server Insider - @IT

VBScript

と思ったが、めんどくせぇなのです。インタラクティブに実行出来ないと確認する気にもなれん。サンプルコードを見たけど、とにかくオブジェクトの名前が長い。メソッドの名前も長い。

Perl

  DB<1> $dir = 'C:\bin'


  DB<2> $file = 'C:\bin\hoge.txt'


  DB<3> if(-d $dir){ print "\"",$dir,"\""," exists\n"}
"C:\bin" exists


  DB<4> if(-d $file){ print "\"",$file,"\""," exists\n"}


  DB<5> if(-e $file){ print "\"",$file,"\""," exists\n"}
"C:\bin\hoge.txt" exists

フォルダもファイルも存在確認出来るし、区別も出来る。なかなか良い。

Python

>>> d = 'C:\\bin'
>>> f = 'C:\\bin\\hoge.txt'
>>> os.path.exists(d)
True
>>> os.path.exists(f)
True
>>> os.path.isdir(d)
True
>>> os.path.isdir(f)
False
>>>

perlより書き方は制限されるが、同じことは出来る。それなりに簡単。可読性はこっちのほうが上。IPython使えば、補完も出来るのでかなり良い感じ。

結論

例えばスクリプトなんか書くとしたら、DOSで書くのは面倒だなぁという感じがする。PerlとPythonならまぁ、どっちでもいいかなと。インストールするのが面倒くせぇけど・・・。インストールされていないとしたら、、、面倒だなぁ、VBScriptとかで書くしかないのかな?!