# 2 `os.path` -- 共通のパス名操作

このモジュールには、パス名を操作する便利な関数が定義されています。

警告: これらの関数の多くはWindowsの一律命名規則（UNCパス名）を正しく サポートしていません。`splitunc()`と`ismount()`は正し くUNCパス名を操作できます。

`abspath`( | path)

  pathの標準化された絶対パスを返します。 たいていのプラットフォームでは、 `normpath(join(os.getcwd(), path))`と同じ結果になります。 バージョン 1.5.2 で 新たに追加 された仕様です。

`basename`( | path)

  パス名pathの末尾のファイル名を返します。 これは`split(path)`で返されるペアの２番目の要素です。 この関数が返す値はUnixの basenameとは異なります； Unixのbasenameは`'/foo/bar/'`に対して `'bar'`を返しますが、`basename()`は空文字列(`''`) を返します。

`commonprefix`( | list)

  パスのlistの中の共通する最長のプレフィックスを（パス名の１文字１文 字を判断して）返します。 もしlistが空なら、空文字列(`''`)を返します。 これは一度に１文字を扱うため、不正なパスを返すことがあるかもしれませんの で注意して下さい。

`dirname`( | path)

  パスpathのディレクトリ名を返します。 これは`split(path)`で返されるペアの最初の要素です。

`exists`( | path)

  pathが存在するなら、`True`を返します。 壊れたシンボリッックリンクについては`False`を返します。

`lexists`( | path)

  path が存在するパスなら`True` を返す。 壊れたシンボリッックリンクについては`True`を返します。 `os.lstat()`がない環境では`exists()`と同じです。 バージョン 2.4 で 新たに追加 された仕様です。

`expanduser`( | path)

  与えられた引数の最初の"`~`"または"`~user`"を、userの ホームディレクトリのパスに置き換えて返します。 最初が"`~`"なら、環境変数のHOMEの値に置き換えられます； "`~user`"なら、ビルトインモジュール `pwd` を使ってパスワードディレクトリから該当 するものを検索します。 もし置き換えに失敗したり、引数のパスがチルダで始まっていなかったら、パス をそのまま返します。 Macintoshではpathをそのまま返します。

`expandvars`( | path)

  引数のパスを環境変数に展開して返します。 引数の中の"`$name`"または"`${name}`"の文字列が 環境変数のnameに置き換えられます。 不正な変数名や存在しない変数名の場合には変換されず、そのまま返します。 Macintoshではpathをそのまま返します。

`getatime`( | path)

  pathに最後にアクセスした時刻を、エポック（`time`モジュール を参照）からの経過時間を示す秒数で返します。 ファイルが存在しなかったりアクセスできない場合は`os.error`を発 生します。 バージョン 2.3 で 変更 された仕様: `os.stat_float_times()`がTrueを返す場合、戻り値は 浮動小数点値となります。 バージョン 1.5.2 で 新たに追加 された仕様です。

`getmtime`( | path)

  pathの最終更新時刻を、エポック（`time`モジュールを参照） からの経過時間を示す秒数で返します。 ファイルが存在しなかったりアクセスできない場合は`os.error`を発 生します。 バージョン 2.3 で 変更 された仕様: `os.stat_float_times()`がTrueを返す場合、戻り値は 浮動小数点値となります。 バージョン 1.5.2 で 新たに追加 された仕様です。

`getctime`( | path)

  システムによって、ファイルの最終変更時刻 (Unix のような システム) や 作成時刻 (Windows のようなシステム) をシステムの ctime で返します。 戻り値はエポック（`time`モジュールを参照）からの経過秒数を 示す数値です。 ファイルが存在しなかったりアクセスできない場合は`os.error`を発 生します。 バージョン 2.3 で 新たに追加 された仕様です。

`getsize`( | path)

  ファイルpathのサイズをバイト数で返します。 ファイルが存在しなかったりアクセスできない場合は`os.error`を発 生します。 バージョン 1.5.2 で 新たに追加 された仕様です。

`isabs`( | path)

  pathが絶対パス（スラッシュで始まる）なら、`True`を返します。

`isfile`( | path)

  pathが存在する正しいファイルなら、Trueを返します。 シンボリックリンクの場合にはその実体をチェックするので、同じパスに対して `islink()`と`isfile()`の両方がTrueを返すことがあ ります。

`isdir`( | path)

  pathが存在するなら、`True`を返します。 シンボリックリンクの場合にはその実体をチェックするので、同じパスに対して `islink()`と`isfile()`の両方がTrueを返すことがあ ります。

`islink`( | path)

  pathがシンボリックリンクなら、`True`を返します。 シンボリックリンクがサポートされていないプラットフォームでは、常に `False`を返します。

`ismount`( | path)

  パス名pathがマウントポイントmount point（ファイルシステムの 中で異なるファイルシステムがマウントされているところ）なら、`True` を返します： この関数はpathの親ディレクトリであるpath/..が pathと異なるデバイス上にあるか、あるいはpath/..と pathが同じデバイス上の同じi-nodeを指しているかをチェックします-- これによって全てのUnixとPOSIX標準でマウントポイントが検出できま す。

`join`( | path1[, path2[, ...]])

  パスに１つあるいはそれ以上のパスの要素をうまく結合します。 付け加える要素に絶対パスがあれば、それより前の要素は全て破棄され、以降の 要素を結合します。 戻り値はpath1と省略可能なpath2以降を結合したもので、 path2が空文字列でないなら、ディレクトリの区切り文字(`os.sep`) が各要素の間に挿入されます。 Windowsでは各ドライブに対してカレントディレクトリがあるので、 `os.path.join("c:", "foo")`によって、 c:\\fooではなく、ドライブC:上の カレントディレクトリからの相対パス（c:foo）が返されます。

`normcase`( | path)

  パス名の大文字、小文字をシステムの標準にします。 Unixではそのまま返します。大文字、小文字を区別しないファイルシステム ではパス名を小文字に変換します。 Windowsでは、スラッシュをバックスラッシュに変換します。

`normpath`( | path)

  パス名を標準化します。 余分な区切り文字や上位レベル参照を削除します。例えば、`A//B`、 `A/./B`、`A/foo/../B`は全て`A/B`になります。 大文字、小文字は標準化しません（それには`normcase()`を使って下 さい）。 Windowsでは、スラッシュをバックスラッシュに変換します。 パスがシンボリックリンクを含んでいるかによって意味が変わることに注意し てください。

`realpath`( | path)

  パスの中のシンボリックリンクを取り除いて、標準化したパスを返します。 利用可能：Unix。 バージョン 2.2 で 新たに追加 された仕様です。

`samefile`( | path1, path2)

  ２つの引数であるパス名が同じファイルあるいはディレクトリを指していれば（ 同じデバイスナンバーとi-nodeナンバーで示されていれば）、`True`を返 します。 どちらかのパス名で`os.stat()`の呼び出しに失敗した場合には、例外 が発生します。 利用可能：Macintosh、Unix

`sameopenfile`( | fp1, fp2)

  fp1とfp2が同じファイルオブジェクトを指していたら、 `True`を返します。 ２つのファイルオブジェクトが異なるファイルディスクリプタを示すこともあり ます。 利用可能：Macintosh、Unix

`samestat`( | stat1, stat2)

  statタプルstat1とstat2が同じファイルを指していたら、 `True`を返します。 これらのタプルは`fstat()`、`lstat()`や `stat()`で返されたものでかまいません。 この関数は、`samefile()`と`sameopenfile()`で使われるの と同様なものを背後に実装しています。 利用可能：Macintosh、Unix

`split`( | path)

  パス名pathを`(headとtail)`のペアに分割します。 tailはパスの構成要素の末尾で、headはそれより前の部分です。 tailはスラッシュを含みません；もしpathの最後にスラッシュがあ れば、tailは空文字列になります。 もしpathにスラッシュがなければ、headは空文字列になります。 pathが空文字列なら、headとtailのどちらも空文字列になり ます。 headの末尾のスラッシュは、headがルートディレクトリ（１つ以上 のスラッシュのみ）でない限り、取り除かれます。 ほとんど全ての場合、`join(head, tail)`の結果が pathと等しくなります（ただ１つの例外は、複数のスラッシュが headとtailを分けている時です）。

`splitdrive`( | path)

  パス名pathを`(drive,tail)`のペアに分割します。 driveはドライブ名か、空文字列です。 ドライブ名を使用しないシステムでは、driveは常に空文字列です。 全ての場合に`drive + tail`はpathと等しくなりま す。 バージョン 1.3 で 新たに追加 された仕様です。

`splitext`( | path)

  パス名pathを`(root, ext)`のペアにします。 `root + ext == path`になります。 extは空文字列か１つのピリオドで始まり、多くても１つのピリオドを含 みます。

`walk`( | path, visit, arg)

  pathをルートとする各ディレクトリに対して（もしpathがディレク トリならpathも含みます）、`(arg, dirname, names)`を引数として関数visitを呼び出します。 引数dirnameは訪れたディレクトリを示し、引数namesはそのディレ クトリ内のファイルのリスト（`os.listdir(dirname)`で得られる） です。 関数visitによってnamesを変更して、dirname以下の対象と なるディレクトリのセットを変更することもできます。例えば、あるディレクト リツリーだけ関数を適用しないなど。 （namesで参照されるオブジェクトは、`del`あるいはスライスを 使って正しく変更しなければなりません。）

  注意: ディレクトリへのシンボリックリンクはサブディレクトリとして扱われないの で、`walk()`による操作対象とはされません。 ディレクトリへのシンボリックリンクを操作対象とするには、 `os.path.islink(file)`と`os.path.isdir(file)` で識別して、`walk()`で必要な操作を実行しなければなりません。

  注意: 新たに追加された``os`.walk()` ジェネレータを 使用すれば、同じ処理をより簡単に行う事ができます。

`supports_unicode_filenames`
  任意のユニコード文字列を（ファイルシステムの制限内で） ファイルネームに使うことが可能で、`os.listdir`がユニコード文字列の 引数に対してユニコードを返すなら、真を返します。 バージョン 2.3 で 新たに追加 された仕様です。