home changes contents help options

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'