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

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

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

このモジュールは、パス名にいくつかの便利な関数を実装します。 ファイルの読み取りまたは書き込みについては、 open()を参照してください。ファイルシステムへのアクセスについては、 os モジュールを参照してください。

ノート

Windowsでは、これらの関数の多くはUNCパス名を適切にサポートしていません。 splitunc()および ismount()はそれらを正しく処理します。


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

ノート

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

  • UNIXスタイルのパスの場合はposixpath
  • Windowsパスの場合はntpath
  • 古いスタイルのMacOSパスの場合は macpath
  • os2emxpath for OS / 2EMXパス


os.path.abspath(path)

パス名 path の正規化された絶対化バージョンを返します。 ほとんどのプラットフォームでは、これは関数 normpath()を次のように呼び出すことと同じです:normpath(join(os.getcwd(), path))

バージョン1.5.2の新機能。

os.path.basename(path)
パス名パスのベース名を返します。 これは、 path を関数 split()に渡すことによって返されるペアの2番目の要素です。 この関数の結果は、Unix basename プログラムとは異なることに注意してください。 ここで、'/foo/bar/'basename'bar'を返し、 basename()関数は空の文字列()を返します。
os.path.commonprefix(list)
list 内のすべてのパスのプレフィックスである最長のパスプレフィックス(文字ごとに取得)を返します。 list が空の場合は、空の文字列()を返します。 これは一度に1文字ずつ機能するため、無効なパスを返す可能性があることに注意してください。
os.path.dirname(path)
パス名パスのディレクトリ名を返します。 これは、 path を関数 split()に渡すことによって返されるペアの最初の要素です。
os.path.exists(path)
path が既存のパスを参照している場合は、Trueを返します。 壊れたシンボリックリンクに対してFalseを返します。 一部のプラットフォームでは、パスが物理的に存在していても、要求されたファイルで os.stat()を実行する権限が付与されていない場合、この関数はFalseを返すことがあります。
os.path.lexists(path)

path が既存のパスを参照している場合は、Trueを返します。 壊れたシンボリックリンクに対してTrueを返します。 os.lstat()がないプラットフォームの exits()と同等です。

バージョン2.4の新機能。

os.path.expanduser(path)

UnixおよびWindowsでは、~または~userの初期コンポーネントをそのユーザーのホームディレクトリに置き換えて引数を返します。

Unixでは、最初の~は、設定されている場合、環境変数 HOMEに置き換えられます。 それ以外の場合、現在のユーザーのホームディレクトリは、組み込みモジュール pwd を介してパスワードディレクトリで検索されます。 最初の~userは、パスワードディレクトリで直接検索されます。

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

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

os.path.expandvars(path)

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

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

os.path.getatime(path)

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

バージョン1.5.2の新機能。

バージョン2.3で変更: os.stat_float_times()Trueを返す場合、結果は浮動小数点数になります。

os.path.getmtime(path)

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

バージョン1.5.2の新機能。

バージョン2.3で変更: os.stat_float_times()Trueを返す場合、結果は浮動小数点数になります。

os.path.getctime(path)

システムのctimeを返します。これは、一部のシステム(Unixなど)では最後のメタデータ変更の時刻であり、他のシステム(Windowsなど)ではパスの作成時刻です。 戻り値は、エポックからの秒数を示す数値です( time モジュールを参照)。 ファイルが存在しないかアクセスできない場合は、 os.error を発生させます。

バージョン2.3の新機能。

os.path.getsize(path)

パスのサイズをバイト単位で返します。 ファイルが存在しないかアクセスできない場合は、 os.error を発生させます。

バージョン1.5.2の新機能。

os.path.isabs(path)
path が絶対パス名の場合、Trueを返します。 Unixでは、それはスラッシュで始まることを意味し、Windowsでは、潜在的なドライブ文字を切り取った後、(バック)スラッシュで始まります。
os.path.isfile(path)
path が既存の通常のファイルである場合は、Trueを返します。 これはシンボリックリンクに従うため、 islink()isfile()の両方が同じパスに対して真になる可能性があります。
os.path.isdir(path)
path が既存のディレクトリの場合は、Trueを返します。 これはシンボリックリンクに従うため、 islink()isdir()の両方が同じパスに対して真になる可能性があります。
os.path.islink(path)
パスがシンボリックリンクであるディレクトリエントリを参照している場合は、Trueを返します。 シンボリックリンクがPythonランタイムでサポートされていない場合は、常にFalse
os.path.ismount(path)
パス名パスマウントポイントの場合はTrueを返します:別のファイルシステムがマウントされているファイルシステム内のポイント。 この関数は、 path の親であるpath/..path とは異なるデバイス上にあるかどうか、またはpath/..と path [ X141X]は、同じデバイス上の同じiノードを指します—これにより、すべてのUnixおよびPOSIXバリアントのマウントポイントが検出されます。
os.path.join(path, *paths)

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

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

os.path.normcase(path)
パス名の大文字と小文字を正規化します。 UnixおよびMacOS Xでは、これはパスを変更せずに返します。 大文字と小文字を区別しないファイルシステムでは、パスを小文字に変換します。 Windowsでは、スラッシュを円記号に変換します。
os.path.normpath(path)
A//BA/B/A/./BA/foo/../BがすべてA/Bになるように、冗長な区切り文字と上位参照を折りたたんでパス名を正規化します。 この文字列操作により、シンボリックリンクを含むパスの意味が変わる場合があります。 Windowsでは、スラッシュを円記号に変換します。 ケースを正規化するには、 normcase()を使用します。
os.path.realpath(path)

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

バージョン2.2の新機能。

os.path.relpath(path[, start])

現在のディレクトリまたはオプションの start ディレクトリから path への相対ファイルパスを返します。 これはパス計算です。パスまたはスタートの存在または性質を確認するためにファイルシステムにアクセスすることはありません。

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

可用性:Windows、Unix。

バージョン2.6の新機能。

os.path.samefile(path1, path2)

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

可用性:Unix。

os.path.sameopenfile(fp1, fp2)

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

可用性:Unix。

os.path.samestat(stat1, stat2)

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

可用性:Unix。

os.path.split(path)
パス名パスをペアに分割します。(head, tail)ここで、 tail は最後のパス名コンポーネントであり、 head はそれまでのすべてです。 tail 部分にスラッシュが含まれることはありません。 パスがスラッシュで終わる場合、テールは空になります。 パスにスラッシュがない場合、ヘッドは空になります。 パスが空の場合、ヘッドテールの両方が空です。 ルートでない限り、末尾のスラッシュは head から削除されます(1つ以上のスラッシュのみ)。 いずれの場合も、join(head, tail)path と同じ場所へのパスを返します(ただし、文字列は異なる場合があります)。 関数 dirname()および basename()も参照してください。
os.path.splitdrive(path)

パス名パスをペア(drive, tail)に分割します。ここで、ドライブはドライブ仕様または空の文字列です。 ドライブ仕様を使用しないシステムでは、ドライブは常に空の文字列になります。 いずれの場合も、drive + tailパスと同じになります。

バージョン1.3の新機能。

os.path.splitext(path)

パス名パスをペア(root, ext)に分割し、root + ext == pathext が空であるか、ピリオドで始まり、最大で1つのピリオドを含むようにします。 ベース名の先頭のピリオドは無視されます。 splitext('.cshrc')('.cshrc', )を返します。

バージョン2.6での変更:以前のバージョンでは、ピリオドのみが最初の文字である場合、空のルートが生成される可能性がありました。

os.path.splitunc(path)

パス名パスをペア(unc, rest)に分割し、 unc がUNCマウントポイント(r'\\host\mount'など)(存在する場合)とになるようにします。 ] rest パスの残りの部分(r'\path\file.ext'など)。 ドライブ文字を含むパスの場合、 unc は常に空の文字列になります。

可用性:Windows。

os.path.walk(path, visit, arg)

パスをルートとするディレクトリツリー内の各ディレクトリ(ディレクトリの場合はパス自体を含む)に対して、引数(arg, dirname, names)を指定して関数 visit を呼び出します。 )。 引数 dirname は訪問先ディレクトリを指定し、引数 names はディレクトリ内のファイルを一覧表示します(os.listdir(dirname)から取得)。 visit 関数は、 names を変更して、 dirname の下にアクセスされるディレクトリのセットに影響を与える場合があります。 木の特定の部分を訪問することを避けるため。 ( names で参照されるオブジェクトは、 del またはスライス割り当てを使用して、その場で変更する必要があります。)

ノート

ディレクトリへのシンボリックリンクはサブディレクトリとして扱われないため、 walk()はそれらにアクセスしません。 リンクされたディレクトリにアクセスするには、os.path.islink(file)およびos.path.isdir(file)でそれらを識別し、必要に応じて walk()を呼び出す必要があります。

ノート

この関数は非推奨になり、Python 3で削除され、 os.walk()が採用されました。

os.path.supports_unicode_filenames

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

バージョン2.3の新機能。