Pythonには、パス名を操作する便利な関数がたくさんあります!!覚えておくと便利なものを、、、
いっぺんにご紹介します
(`・ω・´)ゞ
カレントディレクトリの取得
現在のカレントディレクトリを取得することができます。
import os os.getcwd()
Maya2016の場合は「C:\Program Files\Autodesk\Maya2016」とインストールディレクトリになります。
スタンドアローンなPythonの場合は、Pythonがあるディレクトリ「c:\Python27」になります。
カレントディレクトリの移動
カレントディレクトリを移動することができます。相対パスも指定できます!
import os os.chdir('../') os.getcwd()
上記の例では「../」は「1つ上のディレクトリ」という意味になり、Maya2016では「C:\Program Files\Autodesk」にカレントディレクトリが移動します。
ディレクトリ内のリストを取得
指定したパスにあるファイル・ディレクトリのリストを取得します。
import os os.listdir('C:/Program Files/Autodesk') # ['Maya2014', 'Maya2015', 'Maya2016', 'Maya2016.5', 'Maya2017', 'mentalrayForMaya2014', 'mentalrayForMaya2015', 'mentalrayForMaya2016', 'mentalrayForMaya2016.5'] #
たぶん、「for文」と組み合わせて使用するかと思います。返ってくる名前は、ファイル名・ディレクトリ名なので、後述の「パスの連結」をすることでアクセスできるパス名になります。
import os for path in os.listdir('C:/Program Files/Autodesk'): print(path)
「指定されたディレクトリの「.ma」だけ処理する」という場合は、以下のようになります。
import os for path in os.listdir('./'): if path.endswith(".ma"): # mbファイルだった時の処理 pass
「再帰処理」と組み合わせる事で、指定ディレクトリの末端まで調べつくすことができます!
import os def searchFile(root, result=[]): for path in os.listdir(root): fullpath = os.path.join(root,path) if os.path.isdir(fullpath): result = searchFile(fullpath, result) else: result.append(fullpath) return result searchFile('C:/Program Files/Autodesk/Maya2016/bin')
ディレクトリ?ファイル?
指定されたパス名が、ファイルかディレクトリか調べることができます。「os.listdir」と組み合わせることで、「指定ディレクトリ以下のディレクトリのみ処理する」といった事が可能です!
ディレクトリ
import os os.path.isdir('C:/Program Files/Autodesk') # False
ファイル
import os os.path.isfile('C:/Program Files/Autodesk/Maya2016/bin/maya.exe') # True
パスの連結
指定されたパスを連結してくれます!つなげたい要素を「,区切り」で指定します。いくつでもOKです!
Windowsだから「\」その他のOSだから「/」とか面倒くさいことを考えなくていいので楽かと思います!後、気持ちコードが読みやすいかと思います(`・ω・´)ゞ
import os os.path.join('C:/Program Files/Autodesk/Maya2016','bin','maya.exe') # C:/Program Files/Autodesk/Maya2016\bin\maya.exe
import os print(os.path.join('C:/Program Files/Autodesk/Maya2016','bin','/maya.exe'))
最後が「/maya.exe」となるので、結果が「/maya.exe」のみになってしまいます(;´∀`)
これは、「/maya.exe」が「絶対パス」になるからです。ちょっとWindowsだと馴染みがないかもです。。。
ファイル・ディレクトリの存在確認
指定されたファイル・ディレクトリが存在するか調べます!「存在しなければ、フォルダを作る」「存在していれば、上書き確認をする」といった流れを作るのに必要です!
import os os.path.exists('C:/Program Files/Autodesk/Maya2016') # True
パス名から、ファイル・ディレクトリ名の取得
指定されたパスの最も右側のファイル名・ディレクトリ名を取得できます。
import os os.path.basename('C:/Program Files/Autodesk/Maya2016/bin/maya.exe') # maya.exe
絶対パスにする
指定されたパス名を絶対パスに変換します。以下の例では、カレントディレクトリの意味である「./」を指定して、絶対パスを取得します。Maya2016の場合は「C:\Program Files\Autodesk\Maya2016」になります。
import os os.path.abspath('./')