os.path —一般的なパス名の操作—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/os.path
移動先:案内検索

os.path —一般的なパス名の操作

ソースコード: :source: `Lib / posixpath.py` (for POSIX) and :source: `Lib / ntpath.py` (for Windows NT).



このモジュールは、パス名にいくつかの便利な関数を実装します。 ファイルの読み取りまたは書き込みについては、 open()を参照してください。ファイルシステムへのアクセスについては、 os モジュールを参照してください。 パスパラメータは、文字列またはバイトのいずれかとして渡すことができます。 アプリケーションは、ファイル名を(Unicode)文字列として表すことをお勧めします。 残念ながら、一部のファイル名はUnixで文字列として表現できない場合があるため、Unixで任意のファイル名をサポートする必要があるアプリケーションは、パス名を表すためにバイトオブジェクトを使用する必要があります。 逆に、bytesオブジェクトを使用すると、Windows上のすべてのファイル名を表すことはできません(標準のmbcsエンコーディング)。したがって、Windowsアプリケーションは文字列オブジェクトを使用してすべてのファイルにアクセスする必要があります。

UNIXシェルとは異なり、Pythonは自動パス拡張を行いません。 expanduser()expandvars()などの関数は、アプリケーションがシェルのようなパス拡張を必要とするときに明示的に呼び出すことができます。 ( glob モジュールも参照してください。)

も参照してください

pathlib モジュールは、高レベルのパスオブジェクトを提供します。


ノート

これらの関数はすべて、パラメータとしてバイトのみまたは文字列オブジェクトのみを受け入れます。 パスまたはファイル名が返された場合、結果は同じタイプのオブジェクトになります。


ノート

オペレーティングシステムが異なればパス名の規則も異なるため、標準ライブラリにはこのモジュールのいくつかのバージョンがあります。 os.path モジュールは、常にPythonが実行されているオペレーティングシステムに適したパスモジュールであるため、ローカルパスに使用できます。 ただし、異なる形式のいずれかで常にであるパスを操作する場合は、個々のモジュールをインポートして使用することもできます。 それらはすべて同じインターフェースを持っています:

  • UNIXスタイルのパスの場合はposixpath
  • Windowsパスの場合はntpath


バージョン3.8で変更: exists()lexists()isdir()isfile()islink()、および ismount()は、OSレベルで表現できない文字またはバイトを含むパスの例外を発生させる代わりに、Falseを返すようになりました。


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()とは異なり、これは有効なパスを返します。

バージョン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では、 USERPROFILEが設定されている場合は使用されます。設定されていない場合は、 HOMEPATH HOMEDRIVEの組み合わせが使用されます。使用されます。 最初の~userは、上記で作成されたユーザーパスから最後のディレクトリコンポーネントを削除することによって処理されます。

拡張が失敗した場合、またはパスがチルダで始まらない場合、パスは変更されずに返されます。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.8で変更: Windowsで HOMEを使用しなくなりました。

os.path.expandvars(path)

環境変数を展開した引数を返します。 $nameまたは${name}の形式の部分文字列は、環境変数 name の値に置き換えられます。 不正な形式の変数名と存在しない変数への参照は変更されません。

Windowsでは、$nameおよび${name}に加えて、%name%拡張がサポートされています。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.getatime(path)
パスの最終アクセス時刻を返します。 戻り値は、エポックからの秒数を示す浮動小数点数です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。
os.path.getmtime(path)

パスが最後に変更された時刻を返します。 戻り値は、エポックからの秒数を示す浮動小数点数です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 OSError を発生させます。

バージョン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つ以上のパスコンポーネントをインテリジェントに結合します。 戻り値は、 path* path のメンバーを連結したもので、最後の部分を除く空でない各部分の後にディレクトリ区切り文字が1つだけ続きます。つまり、結果は最後の部分が空の場合は区切り文字。 コンポーネントが絶対パスの場合、以前のすべてのコンポーネントは破棄され、絶対パスコンポーネントから結合が続行されます。

Windowsでは、絶対パスコンポーネント(r'\foo'など)が検出されても、ドライブ文字はリセットされません。 コンポーネントにドライブ文字が含まれている場合、以前のすべてのコンポーネントは破棄され、ドライブ文字がリセットされます。 各ドライブには現在のディレクトリがあるため、os.path.join("c:", "foo")は、c:\fooではなく、ドライブC:c:foo)の現在のディレクトリからの相対パスを表します。 。

バージョン3.6で変更: path および pathspath-likeオブジェクトを受け入れます。

os.path.normcase(path)

パス名の大文字と小文字を正規化します。 Windowsでは、パス名のすべての文字を小文字に変換し、スラッシュを円記号に変換します。 他のオペレーティングシステムでは、パスを変更せずに返します。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.normpath(path)

A//BA/B/A/./BA/foo/../BがすべてA/Bになるように、冗長な区切り文字と上位参照を折りたたんでパス名を正規化します。 この文字列操作により、シンボリックリンクを含むパスの意味が変わる場合があります。 Windowsでは、スラッシュを円記号に変換します。 ケースを正規化するには、 normcase()を使用します。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.realpath(path)

指定されたファイル名の正規パスを返し、パスで検出されたシンボリックリンクを削除します(オペレーティングシステムでサポートされている場合)。

ノート

シンボリックリンクサイクルが発生すると、返されるパスはサイクルの1つのメンバーになりますが、どのメンバーになるかについては保証されません。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

バージョン3.8で変更:シンボリックリンクとジャンクションがWindowsで解決されるようになりました。

os.path.relpath(path, start=os.curdir)

現在のディレクトリまたはオプションの start ディレクトリから path への相対ファイルパスを返します。 これはパス計算です。パスまたはスタートの存在または性質を確認するためにファイルシステムにアクセスすることはありません。 Windowsでは、 pathstart が異なるドライブ上にある場合、 ValueError が発生します。

start のデフォルトは os.curdir です。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.samefile(path1, path2)

両方のパス名引数が同じファイルまたはディレクトリを参照している場合は、Trueを返します。 これはデバイス番号とiノード番号によって決定され、いずれかのパス名での os.stat()呼び出しが失敗した場合に例外が発生します。

バージョン3.2で変更: Windowsサポートが追加されました。

バージョン3.4で変更: Windowsは他のすべてのプラットフォームと同じ実装を使用するようになりました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.sameopenfile(fp1, fp2)

ファイル記述子 fp1fp2 が同じファイルを参照している場合は、Trueを返します。

バージョン3.2で変更: Windowsサポートが追加されました。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.samestat(stat1, stat2)

統計タプル stat1stat2 が同じファイルを参照している場合は、Trueを返します。 これらの構造は、 os.fstat()os.lstat()、または os.stat()によって返されている可能性があります。 この関数は、 samefile()および sameopenfile()で使用される基本的な比較を実装します。

バージョン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 == pathext が空であるか、ピリオドで始まり、最大で1つのピリオドを含むようにします。 ベース名の先頭のピリオドは無視されます。 splitext('.cshrc')('.cshrc', )を返します。

バージョン3.6で変更: パスのようなオブジェクトを受け入れます。

os.path.supports_unicode_filenames
True任意のUnicode文字列をファイル名として使用できる場合(ファイルシステムによって課せられる制限内)。