pathlib —オブジェクト指向ファイルシステムパス—Pythonドキュメント

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

pathlib —オブジェクト指向のファイルシステムパス

バージョン3.4の新機能。


ソースコード: :source: `Lib / pathlib.py`



このモジュールは、さまざまなオペレーティングシステムに適したセマンティクスを持つファイルシステムパスを表すクラスを提供します。 パスクラスは、I / Oなしの純粋な計算操作を提供する純粋なパスと、純粋なパスから継承するがI / O操作も提供する具象パスに分けられます。

class=align-center|../_images/pathlib-inheritance.png このモジュールをこれまで使用したことがない場合、またはどのクラスがタスクに適しているかわからない場合は、 Path が必要になる可能性があります。 コードが実行されているプラットフォームの具象パスをインスタンス化します。

純粋なパスは、いくつかの特別な場合に役立ちます。 例えば:

  1. UnixマシンでWindowsパスを操作する場合(またはその逆)。 Unixで実行している場合、 WindowsPath をインスタンス化することはできませんが、 PureWindowsPath をインスタンス化することはできます。
  2. コードが実際にOSにアクセスせずにパスのみを操作するようにする必要があります。 この場合、純粋なクラスの1つをインスタンス化すると、OSにアクセスする操作がないため、便利な場合があります。

も参照してください

PEP 428 :pathlibモジュール–オブジェクト指向ファイルシステムパス。


も参照してください

文字列の低レベルのパス操作には、 os.path モジュールを使用することもできます。


基本的な使い方

メインクラスのインポート:

>>> from pathlib import Path

サブディレクトリの一覧表示:

>>> p = Path('.')
>>> [x for x in p.iterdir() if x.is_dir()]
[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),
 PosixPath('__pycache__'), PosixPath('build')]

このディレクトリツリーにPythonソースファイルを一覧表示します。

>>> list(p.glob('**/*.py'))
[PosixPath('test_pathlib.py'), PosixPath('setup.py'),
 PosixPath('pathlib.py'), PosixPath('docs/conf.py'),
 PosixPath('build/lib/pathlib.py')]

ディレクトリツリー内の移動:

>>> p = Path('/etc')
>>> q = p / 'init.d' / 'reboot'
>>> q
PosixPath('/etc/init.d/reboot')
>>> q.resolve()
PosixPath('/etc/rc.d/init.d/halt')

パスプロパティのクエリ:

>>> q.exists()
True
>>> q.is_dir()
False

ファイルを開く:

>>> with q.open() as f: f.readline()
...
'#!/bin/bash\n'

純粋な道

純粋なパスオブジェクトは、実際にはファイルシステムにアクセスしないパス処理操作を提供します。 これらのクラスにアクセスするには、フレーバーとも呼ばれる3つの方法があります。

class pathlib.PurePath(*pathsegments)

システムのパスフレーバーを表すジェネリッククラス(インスタンス化すると、 PurePosixPath または PureWindowsPath のいずれかが作成されます):

>>> PurePath('setup.py')      # Running on a Unix machine
PurePosixPath('setup.py')

pathsegments の各要素は、パスセグメントを表す文字列、文字列を返す os.PathLike インターフェイスを実装するオブジェクト、または別のパスオブジェクトのいずれかです。

>>> PurePath('foo', 'some/path', 'bar')
PurePosixPath('foo/some/path/bar')
>>> PurePath(Path('foo'), Path('bar'))
PurePosixPath('foo/bar')

pathsegments が空の場合、現在のディレクトリが想定されます。

>>> PurePath()
PurePosixPath('.')

複数の絶対パスが指定されている場合、最後のパスがアンカーとして使用されます( os.path.join()の動作を模倣)。

>>> PurePath('/etc', '/usr', 'lib64')
PurePosixPath('/usr/lib64')
>>> PureWindowsPath('c:/Windows', 'd:bar')
PureWindowsPath('d:bar')

ただし、Windowsパスでは、ローカルルートを変更しても、以前のドライブ設定は破棄されません。

>>> PureWindowsPath('c:/Windows', '/Program Files')
PureWindowsPath('c:/Program Files')

スプリアススラッシュとシングルドットは折りたたまれていますが、ダブルドット('..')は折りたたまれていません。これは、シンボリックリンクに直面したパスの意味を変更するためです。

>>> PurePath('foo//bar')
PurePosixPath('foo/bar')
>>> PurePath('foo/./bar')
PurePosixPath('foo/bar')
>>> PurePath('foo/../bar')
PurePosixPath('foo/../bar')

(ナイーブなアプローチでは、PurePosixPath('foo/../bar')PurePosixPath('bar')と同等になりますが、fooが別のディレクトリへのシンボリックリンクである場合は誤りです)

純粋なパスオブジェクトは os.PathLike インターフェイスを実装し、インターフェイスが受け入れられる場所ならどこでも使用できるようにします。

バージョン3.6で変更: os.PathLike インターフェースのサポートが追加されました。

class pathlib.PurePosixPath(*pathsegments)

PurePath のサブクラスであるこのパスフレーバーは、Windows以外のファイルシステムパスを表します。

>>> PurePosixPath('/etc')
PurePosixPath('/etc')

pathsegments は、 PurePath と同様に指定されます。

class pathlib.PureWindowsPath(*pathsegments)

PurePath のサブクラスであるこのパスフレーバーは、Windowsファイルシステムパスを表します。

>>> PureWindowsPath('c:/Program Files/')
PureWindowsPath('c:/Program Files')

pathsegments は、 PurePath と同様に指定されます。

実行しているシステムに関係なく、これらのクラスはすべて、システムコールを実行する操作を提供しないため、インスタンス化できます。

一般的なプロパティ

パスは不変でハッシュ可能です。 同じフレーバーのパスは同等で注文可能です。 これらのプロパティは、フレーバーの大文字と小文字を区別するセマンティクスを尊重します。

>>> PurePosixPath('foo') == PurePosixPath('FOO')
False
>>> PureWindowsPath('foo') == PureWindowsPath('FOO')
True
>>> PureWindowsPath('FOO') in { PureWindowsPath('foo') }
True
>>> PureWindowsPath('C:') < PureWindowsPath('d:')
True

異なるフレーバーのパスは比較が等しくなく、順序付けできません。

>>> PureWindowsPath('foo') == PurePosixPath('foo')
False
>>> PureWindowsPath('foo') < PurePosixPath('foo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'PureWindowsPath' and 'PurePosixPath'

演算子

スラッシュ演算子は、 os.path.join()と同様に、子パスの作成に役立ちます。

>>> p = PurePath('/etc')
>>> p
PurePosixPath('/etc')
>>> p / 'init.d' / 'apache2'
PurePosixPath('/etc/init.d/apache2')
>>> q = PurePath('bin')
>>> '/usr' / q
PurePosixPath('/usr/bin')

パスオブジェクトは、 os.PathLike を実装するオブジェクトが受け入れられる場所であればどこでも使用できます。

>>> import os
>>> p = PurePath('/etc')
>>> os.fspath(p)
'/etc'

パスの文字列表現は、生のファイルシステムパス自体です(ネイティブ形式、例: Windowsではバックスラッシュを使用)。これは、ファイルパスを文字列として受け取る任意の関数に渡すことができます。

>>> p = PurePath('/etc')
>>> str(p)
'/etc'
>>> p = PureWindowsPath('c:/Program Files')
>>> str(p)
'c:\\Program Files'

同様に、パスで bytes を呼び出すと、 os.fsencode()でエンコードされているように、生のファイルシステムパスがbytesオブジェクトとして提供されます。

>>> bytes(p)
b'/etc'

ノート

bytes の呼び出しは、Unixでのみ推奨されます。 Windowsでは、Unicode形式はファイルシステムパスの正規表現です。


個々の部品へのアクセス

パスの個々の「パーツ」(コンポーネント)にアクセスするには、次のプロパティを使用します。

PurePath.parts

パスのさまざまなコンポーネントへのアクセスを提供するタプル:

>>> p = PurePath('/usr/bin/python3')
>>> p.parts
('/', 'usr', 'bin', 'python3')

>>> p = PureWindowsPath('c:/Program Files/PSF')
>>> p.parts
('c:\\', 'Program Files', 'PSF')

(ドライブとローカルルートが単一の部分に再グループ化される方法に注意してください)


メソッドとプロパティ

純粋なパスは、次のメソッドとプロパティを提供します。

PurePath.drive

ドライブ文字または名前(ある場合)を表す文字列:

>>> PureWindowsPath('c:/Program Files/').drive
'c:'
>>> PureWindowsPath('/Program Files/').drive
''
>>> PurePosixPath('/etc').drive
''

UNC共有もドライブと見なされます。

>>> PureWindowsPath('//host/share/foo.txt').drive
'\\\\host\\share'
PurePath.root

(ローカルまたはグローバル)ルートを表す文字列(存在する場合):

>>> PureWindowsPath('c:/Program Files/').root
'\\'
>>> PureWindowsPath('c:Program Files/').root
''
>>> PurePosixPath('/etc').root
'/'

UNC共有には常にルートがあります。

>>> PureWindowsPath('//host/share').root
'\\'
PurePath.anchor

ドライブとルートの連結:

>>> PureWindowsPath('c:/Program Files/').anchor
'c:\\'
>>> PureWindowsPath('c:Program Files/').anchor
'c:'
>>> PurePosixPath('/etc').anchor
'/'
>>> PureWindowsPath('//host/share').anchor
'\\\\host\\share\\'
PurePath.parents

パスの論理的な祖先へのアクセスを提供する不変のシーケンス:

>>> p = PureWindowsPath('c:/foo/bar/setup.py')
>>> p.parents[0]
PureWindowsPath('c:/foo/bar')
>>> p.parents[1]
PureWindowsPath('c:/foo')
>>> p.parents[2]
PureWindowsPath('c:/')
PurePath.parent

パスの論理的な親:

>>> p = PurePosixPath('/a/b/c/d')
>>> p.parent
PurePosixPath('/a/b/c')

アンカーまたは空のパスを通過することはできません。

>>> p = PurePosixPath('/')
>>> p.parent
PurePosixPath('/')
>>> p = PurePosixPath('.')
>>> p.parent
PurePosixPath('.')

ノート

これは純粋に字句演算であるため、次の動作になります。

>>> p = PurePosixPath('foo/..')
>>> p.parent
PurePosixPath('foo')

任意のファイルシステムパスを上に移動する場合は、最初に Path.resolve()を呼び出して、シンボリックリンクを解決し、“ ..” コンポーネントを削除することをお勧めします。

PurePath.name

ドライブとルート(存在する場合)を除く、最終パスコンポーネントを表す文字列:

>>> PurePosixPath('my/library/setup.py').name
'setup.py'

UNCドライブ名は考慮されません:

>>> PureWindowsPath('//some/share/setup.py').name
'setup.py'
>>> PureWindowsPath('//some/share').name
''
PurePath.suffix

最終コンポーネントのファイル拡張子(ある場合):

>>> PurePosixPath('my/library/setup.py').suffix
'.py'
>>> PurePosixPath('my/library.tar.gz').suffix
'.gz'
>>> PurePosixPath('my/library').suffix
''
PurePath.suffixes

パスのファイル拡張子のリスト:

>>> PurePosixPath('my/library.tar.gar').suffixes
['.tar', '.gar']
>>> PurePosixPath('my/library.tar.gz').suffixes
['.tar', '.gz']
>>> PurePosixPath('my/library').suffixes
[]
PurePath.stem

接尾辞のない最終パスコンポーネント:

>>> PurePosixPath('my/library.tar.gz').stem
'library.tar'
>>> PurePosixPath('my/library.tar').stem
'library'
>>> PurePosixPath('my/library').stem
'library'
PurePath.as_posix()

スラッシュ(/)を使用してパスの文字列表現を返します。

>>> p = PureWindowsPath('c:\\windows')
>>> str(p)
'c:\\windows'
>>> p.as_posix()
'c:/windows'
PurePath.as_uri()

パスをfile URIとして表します。 パスが絶対パスでない場合、 ValueError が発生します。

>>> p = PurePosixPath('/etc/passwd')
>>> p.as_uri()
'file:///etc/passwd'
>>> p = PureWindowsPath('c:/Windows')
>>> p.as_uri()
'file:///c:/Windows'
PurePath.is_absolute()

パスが絶対であるかどうかを返します。 ルートと(フレーバーで許可されている場合)ドライブの両方がある場合、パスは絶対と見なされます。

>>> PurePosixPath('/a/b').is_absolute()
True
>>> PurePosixPath('a/b').is_absolute()
False

>>> PureWindowsPath('c:/a/b').is_absolute()
True
>>> PureWindowsPath('/a/b').is_absolute()
False
>>> PureWindowsPath('c:').is_absolute()
False
>>> PureWindowsPath('//some/share').is_absolute()
True
PurePath.is_reserved()

PureWindowsPath を使用して、パスがWindowsで予約されていると見なされる場合は、Trueを返し、それ以外の場合はFalseを返します。 PurePosixPath を使用すると、Falseが常に返されます。

>>> PureWindowsPath('nul').is_reserved()
True
>>> PurePosixPath('nul').is_reserved()
False

予約済みパスでのファイルシステムコールは、不思議なことに失敗したり、意図しない影響を及ぼしたりする可能性があります。

PurePath.joinpath(*other)

このメソッドを呼び出すことは、パスを other 引数のそれぞれと順番に組み合わせるのと同じです。

>>> PurePosixPath('/etc').joinpath('passwd')
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))
PurePosixPath('/etc/passwd')
>>> PurePosixPath('/etc').joinpath('init.d', 'apache2')
PurePosixPath('/etc/init.d/apache2')
>>> PureWindowsPath('c:').joinpath('/Program Files')
PureWindowsPath('c:/Program Files')
PurePath.match(pattern)

このパスを、提供されているグロブスタイルのパターンと照合します。 マッチングが成功した場合はTrueを返し、それ以外の場合はFalseを返します。

pattern が相対的である場合、パスは相対的または絶対的のいずれかであり、マッチングは右から行われます。

>>> PurePath('a/b.py').match('*.py')
True
>>> PurePath('/a/b/c.py').match('b/*.py')
True
>>> PurePath('/a/b/c.py').match('a/*.py')
False

pattern が絶対である場合、パスは絶対である必要があり、パス全体が一致する必要があります。

>>> PurePath('/a.py').match('/*.py')
True
>>> PurePath('a/b.py').match('/*.py')
False

他の方法と同様に、大文字と小文字の区別はプラットフォームのデフォルトに従います。

>>> PurePosixPath('b.py').match('*.PY')
False
>>> PureWindowsPath('b.py').match('*.PY')
True
PurePath.relative_to(*other)

other で表されるパスを基準にしてこのパスのバージョンを計算します。 それが不可能な場合、ValueErrorが発生します。

>>> p = PurePosixPath('/etc/passwd')
>>> p.relative_to('/')
PurePosixPath('etc/passwd')
>>> p.relative_to('/etc')
PurePosixPath('passwd')
>>> p.relative_to('/usr')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pathlib.py", line 694, in relative_to
    .format(str(self), str(formatted)))
ValueError: '/etc/passwd' does not start with '/usr'
PurePath.with_name(name)

name が変更された新しいパスを返します。 元のパスに名前がない場合、ValueErrorが発生します。

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_name('setup.py')
PureWindowsPath('c:/Downloads/setup.py')
>>> p = PureWindowsPath('c:/')
>>> p.with_name('setup.py')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name
    raise ValueError("%r has an empty name" % (self,))
ValueError: PureWindowsPath('c:/') has an empty name
PurePath.with_suffix(suffix)

サフィックスを変更した新しいパスを返します。 元のパスにサフィックスがない場合は、代わりに新しいサフィックスが追加されます。 サフィックスが空の文字列の場合、元のサフィックスは削除されます。

>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
>>> p.with_suffix('.bz2')
PureWindowsPath('c:/Downloads/pathlib.tar.bz2')
>>> p = PureWindowsPath('README')
>>> p.with_suffix('.txt')
PureWindowsPath('README.txt')
>>> p = PureWindowsPath('README.txt')
>>> p.with_suffix('')
PureWindowsPath('README')


コンクリートの道

具象パスは、純粋なパスクラスのサブクラスです。 後者によって提供される操作に加えて、パスオブジェクトに対してシステムコールを実行するためのメソッドも提供します。 具体的なパスをインスタンス化するには、次の3つの方法があります。

class pathlib.Path(*pathsegments)

PurePath のサブクラスであるこのクラスは、システムのパスフレーバーの具象パスを表します(インスタンス化すると、 PosixPath または WindowsPath のいずれかが作成されます)。

>>> Path('setup.py')
PosixPath('setup.py')

pathsegments は、 PurePath と同様に指定されます。

class pathlib.PosixPath(*pathsegments)

Path および PurePosixPath のサブクラスであるこのクラスは、Windows以外の具体的なファイルシステムパスを表します。

>>> PosixPath('/etc')
PosixPath('/etc')

pathsegments は、 PurePath と同様に指定されます。

class pathlib.WindowsPath(*pathsegments)

Path および PureWindowsPath のサブクラスであるこのクラスは、具体的なWindowsファイルシステムパスを表します。

>>> WindowsPath('c:/Program Files/')
WindowsPath('c:/Program Files')

pathsegments は、 PurePath と同様に指定されます。

システムに対応するクラスフレーバーのみをインスタンス化できます(互換性のないパスフレーバーでシステムコールを許可すると、アプリケーションにバグや障害が発生する可能性があります)。

>>> import os
>>> os.name
'posix'
>>> Path('setup.py')
PosixPath('setup.py')
>>> PosixPath('setup.py')
PosixPath('setup.py')
>>> WindowsPath('setup.py')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pathlib.py", line 798, in __new__
    % (cls.__name__,))
NotImplementedError: cannot instantiate 'WindowsPath' on your system

メソッド

具象パスは、純粋なパスメソッドに加えて、次のメソッドを提供します。 これらのメソッドの多くは、システムコールが失敗した場合(たとえば、パスが存在しないため)に OSError を発生させる可能性があります。

バージョン3.8で変更: exits()is_dir()is_file()is_mount()is_symlink()is_block_device()is_char_device()is_fifo()is_socket() OSレベルで表現できない文字を含むパスの例外を発生させる代わりに、Falseを返すようになりました。


classmethod Path.cwd()

現在のディレクトリを表す新しいパスオブジェクトを返します( os.getcwd()によって返されます)。

>>> Path.cwd()
PosixPath('/home/antoine/pathlib')
classmethod Path.home()

ユーザーのホームディレクトリを表す新しいパスオブジェクトを返します( os.path.expanduser()~コンストラクトによって返されます)。

>>> Path.home()
PosixPath('/home/antoine')

バージョン3.5の新機能。

Path.stat()

os.stat()のように、このパスに関する情報を含む os.stat_result オブジェクトを返します。 結果は、このメソッドを呼び出すたびに調べられます。

>>> p = Path('setup.py')
>>> p.stat().st_size
956
>>> p.stat().st_mtime
1327883547.852554
Path.chmod(mode)

os.chmod()のように、ファイルモードと権限を変更します。

>>> p = Path('setup.py')
>>> p.stat().st_mode
33277
>>> p.chmod(0o444)
>>> p.stat().st_mode
33060
Path.exists()

パスが既存のファイルまたはディレクトリを指しているかどうか:

>>> Path('.').exists()
True
>>> Path('setup.py').exists()
True
>>> Path('/etc').exists()
True
>>> Path('nonexistentfile').exists()
False

ノート

パスがシンボリックリンクを指している場合、 exists()は、シンボリックリンクが既存のファイルまたはディレクトリを指しているかどうかを返します。

Path.expanduser()

os.path.expanduser()によって返されるように、展開された~および~user構造を持つ新しいパスを返します。

>>> p = PosixPath('~/films/Monty Python')
>>> p.expanduser()
PosixPath('/home/eric/films/Monty Python')

バージョン3.5の新機能。

Path.glob(pattern)

このパスで表されるディレクトリで、指定された相対パターンを取得し、一致するすべてのファイル(任意の種類)を生成します。

>>> sorted(Path('.').glob('*.py'))
[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]
>>> sorted(Path('.').glob('*/*.py'))
[PosixPath('docs/conf.py')]

**」パターンは、「このディレクトリとすべてのサブディレクトリを再帰的に」という意味です。 言い換えると、再帰的なグロブが可能になります。

>>> sorted(Path('.').glob('**/*.py'))
[PosixPath('build/lib/pathlib.py'),
 PosixPath('docs/conf.py'),
 PosixPath('pathlib.py'),
 PosixPath('setup.py'),
 PosixPath('test_pathlib.py')]

ノート

大規模なディレクトリツリーで「**」パターンを使用すると、非常に長い時間がかかる場合があります。

Path.group()
ファイルを所有しているグループの名前を返します。 KeyError は、ファイルのgidがシステムデータベースに見つからない場合に発生します。
Path.is_dir()

パスがディレクトリ(またはディレクトリを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_file()

パスが通常のファイル(または通常のファイルを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_mount()

パスがマウントポイントの場合はTrueを返します。別のファイルシステムがマウントされているファイルシステム内のポイントです。 POSIXでは、この関数は path の親であるpath/..path とは異なるデバイス上にあるかどうか、またはpath/..] path は、同じデバイス上の同じiノードを指します—これにより、すべてのUnixおよびPOSIXバリアントのマウントポイントが検出されます。 Windowsには実装されていません。

バージョン3.7の新機能。

Path.is_symlink()

パスがシンボリックリンクを指している場合はTrueを返し、そうでない場合はFalseを返します。

パスが存在しない場合もFalseが返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_socket()

パスがUnixソケット(またはUnixソケットを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_fifo()

パスがFIFO(またはFIFOを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_block_device()

パスがブロックデバイス(またはブロックデバイスを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.is_char_device()

パスが文字デバイス(または文字デバイスを指すシンボリックリンク)を指している場合はTrueを返し、別の種類のファイルを指している場合はFalseを返します。

Falseは、パスが存在しないか、シンボリックリンクが壊れている場合にも返されます。 その他のエラー(権限エラーなど)が伝播されます。

Path.iterdir()

パスがディレクトリを指している場合、ディレクトリの内容のパスオブジェクトを生成します。

>>> p = Path('docs')
>>> for child in p.iterdir(): child
...
PosixPath('docs/conf.py')
PosixPath('docs/_templates')
PosixPath('docs/make.bat')
PosixPath('docs/index.rst')
PosixPath('docs/_build')
PosixPath('docs/_static')
PosixPath('docs/Makefile')

子は任意の順序で生成され、特別なエントリ'.'および'..'は含まれません。 イテレータの作成後にファイルがディレクトリから削除またはディレクトリに追加された場合、そのファイルのパスオブジェクトを含めるかどうかは指定されていません。

Path.lchmod(mode)
Path.chmod()と同様ですが、パスがシンボリックリンクを指している場合、ターゲットではなくシンボリックリンクのモードが変更されます。
Path.lstat()
Path.stat()と同様ですが、パスがシンボリックリンクを指している場合は、ターゲットではなくシンボリックリンクの情報を返します。
Path.mkdir(mode=0o777, parents=False, exist_ok=False)

この指定されたパスに新しいディレクトリを作成します。 mode が指定されている場合、それはプロセスのumask値と組み合わされて、ファイルモードとアクセスフラグを決定します。 パスがすでに存在する場合、 FileExistsError が発生します。

parents がtrueの場合、このパスの欠落している親は必要に応じて作成されます。 これらは、モードを考慮せずにデフォルトのアクセス許可で作成されます(POSIX mkdir -pコマンドを模倣)。

がfalse(デフォルト)の場合、親が見つからないと FileNotFoundError が発生します。

exit_ok がfalse(デフォルト)の場合、ターゲットディレクトリがすでに存在すると、 FileExistsError が発生します。

exit_ok がtrueの場合、 FileExistsError 例外は無視されます(POSIX mkdir -pコマンドと同じ動作)が、最後のパスコンポーネントが既存の非ディレクトリファイル。

バージョン3.5で変更: exit_ok パラメーターが追加されました。

Path.open(mode='r', buffering=- 1, encoding=None, errors=None, newline=None)

組み込みの open()関数のように、パスが指すファイルを開きます。

>>> p = Path('setup.py')
>>> with p.open() as f:
...     f.readline()
...
'#!/usr/bin/env python3\n'
Path.owner()
ファイルを所有しているユーザーの名前を返します。 KeyError は、ファイルのuidがシステムデータベースに見つからない場合に発生します。
Path.read_bytes()

ポイントされたファイルのバイナリコンテンツをbytesオブジェクトとして返します。

>>> p = Path('my_binary_file')
>>> p.write_bytes(b'Binary file contents')
20
>>> p.read_bytes()
b'Binary file contents'

バージョン3.5の新機能。

Path.read_text(encoding=None, errors=None)

ポイントされたファイルのデコードされた内容を文字列として返します。

>>> p = Path('my_text_file')
>>> p.write_text('Text file contents')
18
>>> p.read_text()
'Text file contents'

ファイルを開いてから閉じます。 オプションのパラメータは、 open()と同じ意味です。

バージョン3.5の新機能。

Path.rename(target)

このファイルまたはディレクトリの名前を指定された target に変更し、 target を指す新しいPathインスタンスを返します。 Unixでは、 target が存在し、それがファイルである場合、ユーザーに権限があれば、サイレントに置き換えられます。 target は、文字列または別のパスオブジェクトのいずれかです。

>>> p = Path('foo')
>>> p.open('w').write('some text')
9
>>> target = Path('bar')
>>> p.rename(target)
PosixPath('bar')
>>> target.open().read()
'some text'

ターゲットパスは絶対パスでも相対パスでもかまいません。 相対パスは、Pathオブジェクトのディレクトリではなく現在の作業ディレクトリを基準にして解釈されます。

バージョン3.8で変更:戻り値を追加し、新しいPathインスタンスを返します。

Path.replace(target)

このファイルまたはディレクトリの名前を指定された target に変更し、 target を指す新しいPathインスタンスを返します。 target が既存のファイルまたはディレクトリを指している場合、無条件に置き換えられます。

ターゲットパスは絶対パスでも相対パスでもかまいません。 相対パスは、Pathオブジェクトのディレクトリではなく現在の作業ディレクトリを基準にして解釈されます。

バージョン3.8で変更:戻り値を追加し、新しいPathインスタンスを返します。

Path.resolve(strict=False)

パスを絶対にし、シンボリックリンクを解決します。 新しいパスオブジェクトが返されます。

>>> p = Path()
>>> p
PosixPath('.')
>>> p.resolve()
PosixPath('/home/antoine/pathlib')

..」コンポーネントも削除されます(これが唯一の方法です)。

>>> p = Path('docs/../setup.py')
>>> p.resolve()
PosixPath('/home/antoine/pathlib/setup.py')

パスが存在せず、 strictTrueの場合、 FileNotFoundError が発生します。 strictFalseの場合、パスは可能な限り解決され、残りは存在するかどうかを確認せずに追加されます。 解決パスに沿って無限ループが発生すると、 RuntimeError が発生します。

バージョン3.6の新機能: strict 引数(3.6より前の動作は厳密です)。

Path.rglob(pattern)

これは、指定された相対パターンの前に「**/」を追加して Path.glob()を呼び出すようなものです。

>>> sorted(Path().rglob("*.py"))
[PosixPath('build/lib/pathlib.py'),
 PosixPath('docs/conf.py'),
 PosixPath('pathlib.py'),
 PosixPath('setup.py'),
 PosixPath('test_pathlib.py')]
Path.rmdir()
このディレクトリを削除します。 ディレクトリは空である必要があります。
Path.samefile(other_path)

このパスが other_path と同じファイルを指しているかどうかを返します。このファイルは、Pathオブジェクトまたは文字列のいずれかです。 セマンティクスは、 os.path.samefile()および os.path.samestat()に似ています。

何らかの理由でいずれかのファイルにアクセスできない場合、 OSError が発生する可能性があります。

>>> p = Path('spam')
>>> q = Path('eggs')
>>> p.samefile(q)
False
>>> p.samefile('spam')
True

バージョン3.5の新機能。

Path.symlink_to(target, target_is_directory=False)

このパスをターゲットへのシンボリックリンクにします。 Windowsでは、リンクのターゲットがディレクトリの場合、 target_is_directory はtrue(デフォルトはFalse)である必要があります。 POSIXでは、 target_is_directory の値は無視されます。

>>> p = Path('mylink')
>>> p.symlink_to('setup.py')
>>> p.resolve()
PosixPath('/home/antoine/pathlib/setup.py')
>>> p.stat().st_size
956
>>> p.lstat().st_size
8

ノート

引数(リンク、ターゲット)の順序は、 os.symlink()の逆です。

Path.link_to(target)

target をこのパスへのハードリンクにします。

警告

この関数は、関数名と引数名の意味にもかかわらず、このパスを target へのハードリンクにしません。 引数の順序(ターゲット、リンク)は Path.symlink_to()の逆ですが、 os.link()の順序と一致します。

バージョン3.8の新機能。

Path.touch(mode=0o666, exist_ok=True)
この指定されたパスにファイルを作成します。 mode が指定されている場合、それはプロセスのumask値と組み合わされて、ファイルモードとアクセスフラグを決定します。 ファイルがすでに存在する場合、 exit_ok がtrueの場合(およびその変更時刻が現在の時刻に更新される場合)、関数は成功します。それ以外の場合、 FileExistsError が発生します。
Path.unlink(missing_ok=False)

このファイルまたはシンボリックリンクを削除します。 パスがディレクトリを指している場合は、代わりに Path.rmdir()を使用してください。

missing_ok がfalse(デフォルト)の場合、パスが存在しないと FileNotFoundError が発生します。

missing_ok がtrueの場合、 FileNotFoundError 例外は無視されます(POSIX rm -fコマンドと同じ動作)。

バージョン3.8で変更: missing_ok パラメーターが追加されました。

Path.write_bytes(data)

バイトモードでポイントされたファイルを開き、それに data を書き込んで、ファイルを閉じます。

>>> p = Path('my_binary_file')
>>> p.write_bytes(b'Binary file contents')
20
>>> p.read_bytes()
b'Binary file contents'

同じ名前の既存のファイルが上書きされます。

バージョン3.5の新機能。

Path.write_text(data, encoding=None, errors=None)

ポイントされたファイルをテキストモードで開き、 data を書き込んで、ファイルを閉じます。

>>> p = Path('my_text_file')
>>> p.write_text('Text file contents')
18
>>> p.read_text()
'Text file contents'

同じ名前の既存のファイルが上書きされます。 オプションのパラメータは、 open()と同じ意味です。

バージョン3.5の新機能。