129:相対パスから絶対パスを求める
os.pathモジュールのjoin(path,*paths)を使うと、OSのパス区切り文字でつないだフルパスを作ることができます。(pathは二つ以上かける)
カレントディレクトをos.getcwd()で取り、一つ目のパラメータとして、二つ目に必要なパスやファイル名を書けば、相対パスから
絶対パスを作ることができる。
区切り文字をOSの標準に変換するには、os.path.normpath(path)を使う。
WindowsとLinuxの両方で動くプログラムを作るには、'/home/seko'のようにpathを/で定義しておいて、os.path.normpath()を使って
OSに固有のパスに変換するのがよさそうだ。
>>> dirname='/home/seko' >>> basename'test.py' >>> os.path.normpath(dirname) '\\home\\seko' >>> os.path.join(dirname,basename) '/home/seko\\test.py' >>> os.path.join(os.path.normpath(dirname),basename) '\\home\\seko\\test.py' >>> os.getcwd() 'C:\\Documents and Settings\\Administrator\\My Documents' >>> os.path.join(os.getcwd(),basename) 'C:\\Documents and Settings\\Administrator\\My Documents\\test.py'
os.path.abspath(path) は os.path.normpath(os.path.join(os.getcwd(), path)) と同じ効果があります。つまり OS 固有の区切り文字に直しつつ絶対パスが得られます。
>>> os.path.abspath(basename) 'C:\\Documents and Settings\\Administrator\\My Documents\\test.py'