11.2。 os.path —一般的なパス名の操作
ソースコード: :source: `Lib / posixpath.py` (for POSIX), :source: `Lib / ntpath.py` (for Windows NT), and :source: `Lib / macpath.py` (for Macintosh)
このモジュールは、パス名にいくつかの便利な関数を実装します。 ファイルの読み取りまたは書き込みについては、 open()を参照してください。ファイルシステムへのアクセスについては、 os モジュールを参照してください。 パスパラメータは、文字列またはバイトのいずれかとして渡すことができます。 アプリケーションは、ファイル名を(Unicode)文字列として表すことをお勧めします。 残念ながら、一部のファイル名はUnixで文字列として表現できない場合があるため、Unixで任意のファイル名をサポートする必要があるアプリケーションは、パス名を表すためにバイトオブジェクトを使用する必要があります。 逆に、bytesオブジェクトを使用すると、Windows上のすべてのファイル名を表すことはできません(標準のmbcs
エンコーディング)。したがって、Windowsアプリケーションは文字列オブジェクトを使用してすべてのファイルにアクセスする必要があります。
UNIXシェルとは異なり、Pythonは自動パス拡張を行いません。 expanduser()や expandvars()などの関数は、アプリケーションがシェルのようなパス拡張を必要とするときに明示的に呼び出すことができます。 ( glob モジュールも参照してください。)
ノート
これらの関数はすべて、パラメータとしてバイトのみまたは文字列オブジェクトのみを受け入れます。 パスまたはファイル名が返された場合、結果は同じタイプのオブジェクトになります。
ノート
オペレーティングシステムが異なればパス名の規則も異なるため、標準ライブラリにはこのモジュールのいくつかのバージョンがあります。 os.path モジュールは、常にPythonが実行されているオペレーティングシステムに適したパスモジュールであるため、ローカルパスに使用できます。 ただし、異なる形式のいずれかで常にであるパスを操作する場合は、個々のモジュールをインポートして使用することもできます。 それらはすべて同じインターフェースを持っています:
- UNIXスタイルのパスの場合は
posixpath
- Windowsパスの場合は
ntpath
- 古いスタイルのMacOSパスの場合は macpath
- os.path.abspath(path)
パス名 path の正規化された絶対化バージョンを返します。 ほとんどのプラットフォームでは、これは関数 normpath()を次のように呼び出すことと同じです:
normpath(join(os.getcwd(), path))
。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.basename(path)
パス名パスのベース名を返します。 これは、 path を関数 split()に渡すことによって返されるペアの2番目の要素です。 この関数の結果は、Unix basename プログラムとは異なることに注意してください。 ここで、
'/foo/bar/'
の basename は'bar'
を返し、 basename()関数は空の文字列()を返します。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.commonpath(paths)
シーケンス paths 内の各パス名の最長の共通サブパスを返します。 パスに絶対パス名と相対パス名の両方が含まれている場合、またはパスが空の場合は、ValueErrorを発生させます。 commonprefix()とは異なり、これは有効なパスを返します。
可用性:Unix、Windows
バージョン3.5の新機能。
バージョン3.6で変更:一連のパスのようなオブジェクトを受け入れます。
- os.path.commonprefix(list)
list 内のすべてのパスのプレフィックスである最長のパスプレフィックス(文字ごとに取得)を返します。 list が空の場合は、空の文字列(
)を返します。
ノート
この関数は、一度に1文字ずつ機能するため、無効なパスを返す場合があります。 有効なパスを取得するには、 commonpath()を参照してください。
>>> os.path.commonprefix(['/usr/lib', '/usr/local/lib']) '/usr/l' >>> os.path.commonpath(['/usr/lib', '/usr/local/lib']) '/usr'
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.dirname(path)
パス名パスのディレクトリ名を返します。 これは、 path を関数 split()に渡すことによって返されるペアの最初の要素です。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.exists(path)
path が既存のパスまたは開いているファイル記述子を参照している場合は、
True
を返します。 壊れたシンボリックリンクに対してFalse
を返します。 一部のプラットフォームでは、パスが物理的に存在していても、要求されたファイルで os.stat()を実行する権限が付与されていない場合、この関数はFalse
を返すことがあります。バージョン3.3で変更: path を整数にできるようになりました。開いているファイル記述子の場合は
True
が返され、それ以外の場合はFalse
が返されます。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.lexists(path)
path が既存のパスを参照している場合は、
True
を返します。 壊れたシンボリックリンクに対してTrue
を返します。 os.lstat()がないプラットフォームの exits()と同等です。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.expanduser(path)
UnixおよびWindowsでは、
~
または~user
の初期コンポーネントをそのユーザーのホームディレクトリに置き換えて引数を返します。Unixでは、最初の
~
は、設定されている場合、環境変数HOME
に置き換えられます。 それ以外の場合、現在のユーザーのホームディレクトリは、組み込みモジュール pwd を介してパスワードディレクトリで検索されます。 最初の~user
は、パスワードディレクトリで直接検索されます。Windowsでは、
HOME
とUSERPROFILE
が設定されている場合は使用されます。設定されていない場合は、HOMEPATH
の組み合わせが使用されます。HOMEDRIVE
が使用されます。 最初の~user
は、上記で作成されたユーザーパスから最後のディレクトリコンポーネントを削除することによって処理されます。拡張が失敗した場合、またはパスがチルダで始まらない場合、パスは変更されずに返されます。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.expandvars(path)
環境変数を展開した引数を返します。
$name
または${name}
の形式の部分文字列は、環境変数 name の値に置き換えられます。 不正な形式の変数名と存在しない変数への参照は変更されません。Windowsでは、
$name
および${name}
に加えて、%name%
拡張がサポートされています。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.getatime(path)
パスの最終アクセス時刻を返します。 戻り値は、エポックからの秒数を示す数値です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。
os.stat_float_times()が
True
を返す場合、結果は浮動小数点数になります。
- os.path.getmtime(path)
パスが最後に変更された時刻を返します。 戻り値は、エポックからの秒数を示す数値です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。
os.stat_float_times()が
True
を返す場合、結果は浮動小数点数になります。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.getctime(path)
システムのctimeを返します。これは、一部のシステム(Unixなど)では最後のメタデータ変更の時刻であり、他のシステム(Windowsなど)ではパスの作成時刻です。 戻り値は、エポックからの秒数を示す数値です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.getsize(path)
パスのサイズをバイト単位で返します。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.isabs(path)
path が絶対パス名の場合、
True
を返します。 Unixでは、それはスラッシュで始まることを意味し、Windowsでは、潜在的なドライブ文字を切り取った後、(バック)スラッシュで始まります。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.isfile(path)
パスが既存の通常ファイルの場合、
True
を返します。 これはシンボリックリンクに従うため、 islink()と isfile()の両方が同じパスに対して真になる可能性があります。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.isdir(path)
パスが既存のディレクトリの場合、
True
を返します。 これはシンボリックリンクに従うため、 islink()と isdir()の両方が同じパスに対して真になる可能性があります。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.islink(path)
パスがシンボリックリンクである既存のディレクトリエントリを参照している場合は、
True
を返します。 シンボリックリンクがPythonランタイムでサポートされていない場合は、常にFalse
。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.ismount(path)
パス名パスがマウントポイントの場合は
True
を返します:別のファイルシステムがマウントされているファイルシステム内のポイント。 POSIXでは、この関数は path の親であるpath/..
が path とは異なるデバイス上にあるかどうか、またはpath/..
と ] path は、同じデバイス上の同じiノードを指します—これにより、すべてのUnixおよびPOSIXバリアントのマウントポイントが検出されます。 Windowsでは、ドライブ文字のルートと共有UNCが常にマウントポイントであり、他のパスの場合はGetVolumePathName
が呼び出され、入力パスと異なるかどうかが確認されます。バージョン3.4の新機能: Windowsでの非ルートマウントポイントの検出のサポート。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.join(path, *paths)
1つ以上のパスコンポーネントをインテリジェントに結合します。 戻り値は、パスと *パスのメンバーを連結したもので、最後の部分を除く空でない各部分の後にディレクトリ区切り文字(
os.sep
)が1つだけ続きます。最後の部分が空の場合にのみ、結果は区切り文字で終了します。 コンポーネントが絶対パスの場合、以前のすべてのコンポーネントは破棄され、絶対パスコンポーネントから結合が続行されます。Windowsでは、絶対パスコンポーネント(
r'\foo'
など)が検出されても、ドライブ文字はリセットされません。 コンポーネントにドライブ文字が含まれている場合、以前のすべてのコンポーネントは破棄され、ドライブ文字がリセットされます。 各ドライブには現在のディレクトリがあるため、os.path.join("c:", "foo")
は、c:\foo
ではなく、ドライブC:
(c:foo
)の現在のディレクトリからの相対パスを表します。 。バージョン3.6で変更: path および paths の path-likeオブジェクトを受け入れます。
- os.path.normcase(path)
パス名の大文字と小文字を正規化します。 UnixおよびMacOS Xでは、これはパスを変更せずに返します。 大文字と小文字を区別しないファイルシステムでは、パスを小文字に変換します。 Windowsでは、スラッシュを円記号に変換します。 path のタイプが
str
またはbytes
でない場合( os.PathLike インターフェイスを介して直接的または間接的に)TypeErrorを発生させます。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.normpath(path)
A//B
、A/B/
、A/./B
、A/foo/../B
がすべてA/B
になるように、冗長な区切り文字と上位参照を折りたたんでパス名を正規化します。 この文字列操作により、シンボリックリンクを含むパスの意味が変わる場合があります。 Windowsでは、スラッシュを円記号に変換します。 ケースを正規化するには、 normcase()を使用します。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.realpath(path)
指定されたファイル名の正規パスを返し、パスで検出されたシンボリックリンクを削除します(オペレーティングシステムでサポートされている場合)。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.relpath(path, start=os.curdir)
現在のディレクトリまたはオプションの start ディレクトリから path への相対ファイルパスを返します。 これはパス計算です。パスまたはスタートの存在または性質を確認するためにファイルシステムにアクセスすることはありません。
start のデフォルトは os.curdir です。
可用性:Unix、Windows。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.samefile(path1, path2)
両方のパス名引数が同じファイルまたはディレクトリを参照している場合は、
True
を返します。 これはデバイス番号とiノード番号によって決定され、いずれかのパス名での os.stat()呼び出しが失敗した場合に例外が発生します。可用性:Unix、Windows。
バージョン3.2で変更: Windowsサポートが追加されました。
バージョン3.4で変更: Windowsは他のすべてのプラットフォームと同じ実装を使用するようになりました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.sameopenfile(fp1, fp2)
ファイル記述子 fp1 と fp2 が同じファイルを参照している場合は、
True
を返します。可用性:Unix、Windows。
バージョン3.2で変更: Windowsサポートが追加されました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.samestat(stat1, stat2)
統計タプル stat1 と stat2 が同じファイルを参照している場合は、
True
を返します。 これらの構造は、 os.fstat()、 os.lstat()、または os.stat()によって返されている可能性があります。 この関数は、 samefile()および sameopenfile()で使用される基本的な比較を実装します。可用性:Unix、Windows。
バージョン3.4で変更: Windowsサポートが追加されました。
バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.split(path)
パス名パスをペアに分割します。
(head, tail)
ここで、 tail は最後のパス名コンポーネントであり、 head はそれまでのすべてです。 tail 部分にスラッシュが含まれることはありません。 パスがスラッシュで終わる場合、テールは空になります。 パスにスラッシュがない場合、ヘッドは空になります。 パスが空の場合、ヘッドとテールの両方が空です。 ルートでない限り、末尾のスラッシュは head から削除されます(1つ以上のスラッシュのみ)。 いずれの場合も、join(head, tail)
は path と同じ場所へのパスを返します(ただし、文字列は異なる場合があります)。 関数 dirname()および basename()も参照してください。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.splitdrive(path)
パス名パスをペア
(drive, tail)
に分割します。ここで、ドライブはマウントポイントまたは空の文字列です。 ドライブ仕様を使用しないシステムでは、ドライブは常に空の文字列になります。 いずれの場合も、drive + tail
はパスと同じになります。Windowsでは、パス名をドライブ/ UNC共有ポイントと相対パスに分割します。
パスにドライブ文字が含まれている場合、ドライブにはコロンまでのすべてが含まれます。 例えば
splitdrive("c:/dir")
は("c:", "/dir")
を返しますパスにUNCパスが含まれている場合、ドライブにはホスト名と共有が含まれますが、4番目の区切り文字は含まれません。 例えば
splitdrive("//host/computer/dir")
は("//host/computer", "/dir")
を返しますバージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.splitext(path)
パス名パスをペア
(root, ext)
に分割し、root + ext == path
と ext が空であるか、ピリオドで始まり、最大で1つのピリオドを含むようにします。 ベース名の先頭のピリオドは無視されます。splitext('.cshrc')
は('.cshrc', )
を返します。バージョン3.6で変更: パスのようなオブジェクトを受け入れます。
- os.path.splitunc(path)
バージョン3.1以降非推奨:代わりに splitdrive を使用してください。
パス名パスをペア
(unc, rest)
に分割し、 unc がUNCマウントポイント(r'\\host\mount'
など)(存在する場合)とになるようにします。 ] rest パスの残りの部分(r'\path\file.ext'
など)。 ドライブ文字を含むパスの場合、 unc は常に空の文字列になります。可用性:Windows。
- os.path.supports_unicode_filenames
True
任意のUnicode文字列をファイル名として使用できる場合(ファイルシステムによって課せられる制限内)。