11.1 os.path -- 共通のパス名操作

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

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

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

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

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

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

exists( path)
pathが存在するなら、Trueを返します。 壊れたシンボリッックリンクについてはFalseを返します。 いくつかのプラットフォームでは、 たとえ path が物理的に存在していたとしても、 リクエストされたファイルに対する os.stat() の実行が許可されなければ この関数が False を返すことがあります。

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

expanduser( path)
Unixでは、 与えられた引数の先頭のパス要素"~"または"~user"を、 userのホームディレクトリのパスに置き換えて返します。 先頭の"~"は、環境変数HOMEが設定されているならその値に置き換えられます。 そうでなければ、現在のユーザのホームディレクトリをビルトインモジュール pwdを使ってパスワードディレクトリ から探して置き換えます。 先頭の"~user"については、直接パスワードディレクトリから探します。

Windows では"~"だけがサポートされ、環境変数HOMEまたは HOMEDRIVEHOMEPATHの組み合わせで置き換えられます。

もし置き換えに失敗したり、引数のパスがチルダで始まっていなかったら、パス をそのまま返します。

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

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

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

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

realpath( path)
パスの中のシンボリックリンク(もしそれが当該オペレーティングシステムで サポートされていれば)を取り除いて、標準化したパスを返します。 バージョン 2.2 で 新たに追加 された仕様です。

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

sameopenfile( fp1, fp2)
ファイルディスクリプタfp1fp2が同じファイルを指していたら、 Trueを返します。 利用可能:Macintosh、Unix

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

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

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

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

splitunc( path)
パス名pathをペア (unc, rest) に分割します。 ここでuncは(r'\\host\mount'のような)UNCマウントポイント、 そしてrestは(r'\path\file.ext'のような)パスの残りの部分です。 ドライブ名を含むパスでは常にuncが空文字列になります。 利用可能: Windows。

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 で 新たに追加 された仕様です。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。