Документация Python неофициальный перевод

pathlib.md

1144 строк · 57.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.9/library/pathlib.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`pathlib`](https://python-all.ru/3.9/library/pathlib.html#module-pathlib) – Объектно-ориентированные пути файловой системы89Новое в версии 3.4.1011**Исходный код:** [Lib/pathlib.py](https://python-all.ru/src/3.9/Lib/pathlib.py)1213---1415Этот модуль предоставляет классы, представляющие пути файловой системы с семантикой, подходящей для разных операционных систем. Классы путей делятся на [чистые пути](https://python-all.ru/3.9/library/pathlib.html#pure-paths), которые выполняют только вычислительные операции без ввода-вывода, и [конкретные пути](https://python-all.ru/3.9/library/pathlib.html#concrete-paths), которые наследуют чистые пути, но также предоставляют операции ввода-вывода.1617![../_images/pathlib-inheritance.png](https://python-all.ru/3.9/_images/pathlib-inheritance.png)1819Если вы никогда не пользовались этим модулем раньше или просто не уверены, какой класс подходит для вашей задачи, скорее всего, вам нужен [`Path`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path). Он создаёт экземпляр [конкретного пути](https://python-all.ru/3.9/library/pathlib.html#concrete-paths) для платформы, на которой выполняется код.2021Чистые пути полезны в некоторых особых случаях; например:22231. Если требуется манипулировать путями Windows на машине Unix (или наоборот). При работе на Unix нельзя создать экземпляр [`WindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.WindowsPath), но можно создать [`PureWindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PureWindowsPath).242. Если нужно, чтобы код только манипулировал путями без фактического обращения к ОС. В таком случае может быть полезно создать экземпляр одного из чистых классов, поскольку они просто не имеют операций доступа к ОС.2526> **См. также**27>28> [**PEP 428**](https://python-all.ru/3.9/library/pathlib.html): модуль pathlib – объектно-ориентированные пути файловой системы.2930> **См. также**31>32> Для низкоуровневых манипуляций с путями в виде строк можно также использовать модуль [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).3334## Основное использование3536Импорт основного класса:3738```python39>>> from pathlib import Path40```4142Список подкаталогов:4344```python45>>> p = Path('.')46>>> [x for x in p.iterdir() if x.is_dir()]47[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),48 PosixPath('__pycache__'), PosixPath('build')]49```5051Список исходных файлов Python в этом дереве каталогов:5253```python54>>> list(p.glob('**/*.py'))55[PosixPath('test_pathlib.py'), PosixPath('setup.py'),56 PosixPath('pathlib.py'), PosixPath('docs/conf.py'),57 PosixPath('build/lib/pathlib.py')]58```5960Навигация по дереву каталогов:6162```python63>>> p = Path('/etc')64>>> q = p / 'init.d' / 'reboot'65>>> q66PosixPath('/etc/init.d/reboot')67>>> q.resolve()68PosixPath('/etc/rc.d/init.d/halt')69```7071Запрос свойств пути:7273```python74>>> q.exists()75True76>>> q.is_dir()77False78```7980Открытие файла:8182```python83>>> with q.open() as f: f.readline()84...85'#!/bin/bash\n'86```8788## Чистые пути8990Объекты чистых путей предоставляют операции обработки путей, которые не обращаются к файловой системе. Существует три способа доступа к этим классам, которые также называются *разновидностями*:9192#### `class pathlib.PurePath(*pathsegments)`9394Общий класс, представляющий разновидность пути системы (при создании экземпляра создаётся либо [`PurePosixPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePosixPath), либо [`PureWindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PureWindowsPath)):9596```python97>>> PurePath('setup.py')      # Запуск на Unix-машине98PurePosixPath('setup.py')99```100101Каждый элемент *pathsegments* может быть строкой, представляющей сегмент пути, объектом, реализующим интерфейс [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike), который возвращает строку, или другим объектом пути:102103```python104>>> PurePath('foo', 'some/path', 'bar')105PurePosixPath('foo/some/path/bar')106>>> PurePath(Path('foo'), Path('bar'))107PurePosixPath('foo/bar')108```109110Когда *pathsegments* пуст, подразумевается текущий каталог:111112```python113>>> PurePath()114PurePosixPath('.')115```116117Когда передано несколько абсолютных путей, последний используется как привязка (по аналогии с поведением [`os.path.join()`](https://python-all.ru/3.9/library/os.path.html#os.path.join)):118119```python120>>> PurePath('/etc', '/usr', 'lib64')121PurePosixPath('/usr/lib64')122>>> PureWindowsPath('c:/Windows', 'd:bar')123PureWindowsPath('d:bar')124```125126Однако в пути Windows смена локального корня не отбрасывает предыдущую настройку диска:127128```python129>>> PureWindowsPath('c:/Windows', '/Program Files')130PureWindowsPath('c:/Program Files')131```132133Лишние косые черты и одиночные точки схлопываются, но двойные точки (`'..'`) – нет, так как это изменило бы смысл пути при наличии символических ссылок:134135```python136>>> PurePath('foo//bar')137PurePosixPath('foo/bar')138>>> PurePath('foo/./bar')139PurePosixPath('foo/bar')140>>> PurePath('foo/../bar')141PurePosixPath('foo/../bar')142```143144(наивный подход сделал бы `PurePosixPath('foo/../bar')` эквивалентным `PurePosixPath('bar')`, что неверно, если `foo` является символической ссылкой на другой каталог)145146Объекты чистых путей реализуют интерфейс [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike), что позволяет использовать их везде, где этот интерфейс принимается.147148Изменено в версии 3.6: Добавлена поддержка интерфейса [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike).149150#### `class pathlib.PurePosixPath(*pathsegments)`151152Подкласс [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath), эта разновидность путей представляет пути файловой системы, отличные от Windows:153154```python155>>> PurePosixPath('/etc')156PurePosixPath('/etc')157```158159Параметр *pathsegments* задаётся так же, как [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).160161#### `class pathlib.PureWindowsPath(*pathsegments)`162163Подкласс [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath), этот вариант пути представляет пути файловой системы Windows:164165```python166>>> PureWindowsPath('c:/Program Files/')167PureWindowsPath('c:/Program Files')168```169170Параметр *pathsegments* задаётся так же, как [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).171172Независимо от используемой системы можно создавать экземпляры всех этих классов, поскольку они не предоставляют никаких операций, совершающих системные вызовы.173174### Общие свойства175176Пути неизменяемы и хешируемы. Пути одного варианта сравнимы и упорядочиваемы. Эти свойства учитывают семантику регистрозависимости данного варианта:177178```python179>>> PurePosixPath('foo') == PurePosixPath('FOO')180False181>>> PureWindowsPath('foo') == PureWindowsPath('FOO')182True183>>> PureWindowsPath('FOO') in { PureWindowsPath('foo') }184True185>>> PureWindowsPath('C:') < PureWindowsPath('d:')186True187```188189Пути разных разновидностей неравны и не упорядочиваются:190191```python192>>> PureWindowsPath('foo') == PurePosixPath('foo')193False194>>> PureWindowsPath('foo') < PurePosixPath('foo')195Traceback (most recent call last):196  File "<stdin>", line 1, in <module>197TypeError: '<' not supported between instances of 'PureWindowsPath' and 'PurePosixPath'198```199200### Операторы201202Оператор слэш помогает создавать дочерние пути, аналогично [`os.path.join()`](https://python-all.ru/3.9/library/os.path.html#os.path.join):203204```python205>>> p = PurePath('/etc')206>>> p207PurePosixPath('/etc')208>>> p / 'init.d' / 'apache2'209PurePosixPath('/etc/init.d/apache2')210>>> q = PurePath('bin')211>>> '/usr' / q212PurePosixPath('/usr/bin')213```214215Объект пути можно использовать везде, где принимается объект, реализующий [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike):216217```python218>>> import os219>>> p = PurePath('/etc')220>>> os.fspath(p)221'/etc'222```223224Строковое представление пути – это сам сырой путь файловой системы (в нативном виде, например с обратными слешами в Windows), который можно передать любой функции, принимающей путь к файлу в виде строки:225226```python227>>> p = PurePath('/etc')228>>> str(p)229'/etc'230>>> p = PureWindowsPath('c:/Program Files')231>>> str(p)232'c:\\Program Files'233```234235Аналогично, вызов [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes) для пути возвращает сырой путь файловой системы в виде объекта bytes, закодированный с помощью [`os.fsencode()`](https://python-all.ru/3.9/library/os.html#os.fsencode):236237```python238>>> bytes(p)239b'/etc'240```241242> **Примечание**243>244> Вызов [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes) рекомендуется только в Unix. В Windows форма Unicode является каноническим представлением путей файловой системы.245246### Доступ к отдельным частям247248Для доступа к отдельным «частям» (компонентам) пути используйте следующее свойство:249250#### `PurePath.parts`251252Кортеж, предоставляющий доступ к различным компонентам пути:253254```python255>>> p = PurePath('/usr/bin/python3')256>>> p.parts257('/', 'usr', 'bin', 'python3')258259>>> p = PureWindowsPath('c:/Program Files/PSF')260>>> p.parts261('c:\\', 'Program Files', 'PSF')262```263264(обратите внимание, как диск и локальный корень объединены в одну часть)265266### Методы и свойства267268Чистые пути предоставляют следующие методы и свойства:269270#### `PurePath.drive`271272Строка, представляющая букву или имя диска, если таковой имеется:273274```python275>>> PureWindowsPath('c:/Program Files/').drive276'c:'277>>> PureWindowsPath('/Program Files/').drive278''279>>> PurePosixPath('/etc').drive280''281```282283UNC-ресурсы также считаются дисками:284285```python286>>> PureWindowsPath('//host/share/foo.txt').drive287'\\\\host\\share'288```289290#### `PurePath.root`291292Строка, представляющая (локальный или глобальный) корень, если таковой имеется:293294```python295>>> PureWindowsPath('c:/Program Files/').root296'\\'297>>> PureWindowsPath('c:Program Files/').root298''299>>> PurePosixPath('/etc').root300'/'301```302303UNC-ресурсы всегда имеют корень:304305```python306>>> PureWindowsPath('//host/share').root307'\\'308```309310#### `PurePath.anchor`311312Объединение диска и корневого каталога:313314```python315>>> PureWindowsPath('c:/Program Files/').anchor316'c:\\'317>>> PureWindowsPath('c:Program Files/').anchor318'c:'319>>> PurePosixPath('/etc').anchor320'/'321>>> PureWindowsPath('//host/share').anchor322'\\\\host\\share\\'323```324325#### `PurePath.parents`326327Неизменяемая последовательность, обеспечивающая доступ к логическим предкам пути:328329```python330>>> p = PureWindowsPath('c:/foo/bar/setup.py')331>>> p.parents[0]332PureWindowsPath('c:/foo/bar')333>>> p.parents[1]334PureWindowsPath('c:/foo')335>>> p.parents[2]336PureWindowsPath('c:/')337```338339#### `PurePath.parent`340341Логический родитель пути:342343```python344>>> p = PurePosixPath('/a/b/c/d')345>>> p.parent346PurePosixPath('/a/b/c')347```348349Нельзя выйти за пределы anchor или пустого пути:350351```python352>>> p = PurePosixPath('/')353>>> p.parent354PurePosixPath('/')355>>> p = PurePosixPath('.')356>>> p.parent357PurePosixPath('.')358```359360> **Примечание**361>362> Это чисто лексическая операция, поэтому поведение следующее:363>364> ```python365> >>> p = PurePosixPath('foo/..')366> >>> p.parent367> PurePosixPath('foo')368> ```369>370> Если нужно подняться вверх по произвольному пути файловой системы, рекомендуется сначала вызвать [`Path.resolve()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.resolve), чтобы разрешить символические ссылки и убрать компоненты *“..”*.371372#### `PurePath.name`373374Строка, представляющая последний компонент пути, исключая диск и корневой каталог (если они есть):375376```python377>>> PurePosixPath('my/library/setup.py').name378'setup.py'379```380381UNC-имена дисков не учитываются:382383```python384>>> PureWindowsPath('//some/share/setup.py').name385'setup.py'386>>> PureWindowsPath('//some/share').name387''388```389390#### `PurePath.suffix`391392Расширение файла последнего компонента, если таковое имеется:393394```python395>>> PurePosixPath('my/library/setup.py').suffix396'.py'397>>> PurePosixPath('my/library.tar.gz').suffix398'.gz'399>>> PurePosixPath('my/library').suffix400''401```402403#### `PurePath.suffixes`404405Список расширений файлов пути:406407```python408>>> PurePosixPath('my/library.tar.gar').suffixes409['.tar', '.gar']410>>> PurePosixPath('my/library.tar.gz').suffixes411['.tar', '.gz']412>>> PurePosixPath('my/library').suffixes413[]414```415416#### `PurePath.stem`417418Последний компонент пути без суффикса:419420```python421>>> PurePosixPath('my/library.tar.gz').stem422'library.tar'423>>> PurePosixPath('my/library.tar').stem424'library'425>>> PurePosixPath('my/library').stem426'library'427```428429#### `PurePath.as_posix()`430431Возвращает строковое представление пути с прямыми слэшами (`/`):432433```python434>>> p = PureWindowsPath('c:\\windows')435>>> str(p)436'c:\\windows'437>>> p.as_posix()438'c:/windows'439```440441#### `PurePath.as_uri()`442443Представляет путь в виде `file` URI. [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError) возбуждается, если путь не является абсолютным.444445```python446>>> p = PurePosixPath('/etc/passwd')447>>> p.as_uri()448'file:///etc/passwd'449>>> p = PureWindowsPath('c:/Windows')450>>> p.as_uri()451'file:///c:/Windows'452```453454#### `PurePath.is_absolute()`455456Возвращает, является ли путь абсолютным. Путь считается абсолютным, если у него есть и корень, и (если это допускает разновидность) диск:457458```python459>>> PurePosixPath('/a/b').is_absolute()460True461>>> PurePosixPath('a/b').is_absolute()462False463464>>> PureWindowsPath('c:/a/b').is_absolute()465True466>>> PureWindowsPath('/a/b').is_absolute()467False468>>> PureWindowsPath('c:').is_absolute()469False470>>> PureWindowsPath('//some/share').is_absolute()471True472```473474#### `PurePath.is_relative_to(*other)`475476Возвращает, является ли этот путь относительным по отношению к пути *other*.477478```python479>>> p = PurePath('/etc/passwd')480>>> p.is_relative_to('/etc')481True482>>> p.is_relative_to('/usr')483False484```485486Новое в версии 3.9.487488#### `PurePath.is_reserved()`489490С [`PureWindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PureWindowsPath) возвращает `True`, если путь считается зарезервированным в Windows, иначе `False`. С [`PurePosixPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePosixPath) всегда возвращается `False`.491492```python493>>> PureWindowsPath('nul').is_reserved()494True495>>> PurePosixPath('nul').is_reserved()496False497```498499Вызовы файловой системы для зарезервированных путей могут приводить к неожиданным ошибкам или непредвиденным последствиям.500501#### `PurePath.joinpath(*other)`502503Вызов этого метода эквивалентен последовательному объединению пути с каждым из аргументов *other*:504505```python506>>> PurePosixPath('/etc').joinpath('passwd')507PurePosixPath('/etc/passwd')508>>> PurePosixPath('/etc').joinpath(PurePosixPath('passwd'))509PurePosixPath('/etc/passwd')510>>> PurePosixPath('/etc').joinpath('init.d', 'apache2')511PurePosixPath('/etc/init.d/apache2')512>>> PureWindowsPath('c:').joinpath('/Program Files')513PureWindowsPath('c:/Program Files')514```515516#### `PurePath.match(pattern)`517518Сопоставляет этот путь с предоставленным шаблоном в стиле glob. Возвращает `True` в случае успешного сопоставления, иначе `False`.519520Если *pattern* является относительным, путь может быть как относительным, так и абсолютным, и сопоставление выполняется с правого конца:521522```python523>>> PurePath('a/b.py').match('*.py')524True525>>> PurePath('/a/b/c.py').match('b/*.py')526True527>>> PurePath('/a/b/c.py').match('a/*.py')528False529```530531Если *pattern* является абсолютным, путь должен быть абсолютным, и должен совпадать весь путь:532533```python534>>> PurePath('/a.py').match('/*.py')535True536>>> PurePath('a/b.py').match('/*.py')537False538```539540Как и в других методах, чувствительность к регистру определяется по умолчанию платформой:541542```python543>>> PurePosixPath('b.py').match('*.PY')544False545>>> PureWindowsPath('b.py').match('*.PY')546True547```548549#### `PurePath.relative_to(*other)`550551Вычисляет версию этого пути относительно пути, представленного *other*. Если это невозможно, возбуждается ValueError:552553```python554>>> p = PurePosixPath('/etc/passwd')555>>> p.relative_to('/')556PurePosixPath('etc/passwd')557>>> p.relative_to('/etc')558PurePosixPath('passwd')559>>> p.relative_to('/usr')560Traceback (most recent call last):561  File "<stdin>", line 1, in <module>562  File "pathlib.py", line 694, in relative_to563    .format(str(self), str(formatted)))564ValueError: '/etc/passwd' is not in the subpath of '/usr' OR one path is relative and the other absolute.565```566567ПРИМЕЧАНИЕ: Эта функция является частью [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath) и работает со строками. Она не проверяет и не обращается к структуре файловой системы.568569#### `PurePath.with_name(name)`570571Возвращает новый путь с изменённым [`name`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.name). Если у исходного пути нет имени, вызывается ValueError:572573```python574>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')575>>> p.with_name('setup.py')576PureWindowsPath('c:/Downloads/setup.py')577>>> p = PureWindowsPath('c:/')578>>> p.with_name('setup.py')579Traceback (most recent call last):580  File "<stdin>", line 1, in <module>581  File "/home/antoine/cpython/default/Lib/pathlib.py", line 751, in with_name582    raise ValueError("%r has an empty name" % (self,))583ValueError: PureWindowsPath('c:/') has an empty name584```585586#### `PurePath.with_stem(stem)`587588Возвращает новый путь с изменённым [`stem`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.stem). Если у исходного пути нет имени, вызывается ValueError:589590```python591>>> p = PureWindowsPath('c:/Downloads/draft.txt')592>>> p.with_stem('final')593PureWindowsPath('c:/Downloads/final.txt')594>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')595>>> p.with_stem('lib')596PureWindowsPath('c:/Downloads/lib.gz')597>>> p = PureWindowsPath('c:/')598>>> p.with_stem('')599Traceback (most recent call last):600  File "<stdin>", line 1, in <module>601  File "/home/antoine/cpython/default/Lib/pathlib.py", line 861, in with_stem602    return self.with_name(stem + self.suffix)603  File "/home/antoine/cpython/default/Lib/pathlib.py", line 851, in with_name604    raise ValueError("%r has an empty name" % (self,))605ValueError: PureWindowsPath('c:/') has an empty name606```607608Новое в версии 3.9.609610#### `PurePath.with_suffix(suffix)`611612Возвращает новый путь с изменённым [`suffix`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.suffix). Если у исходного пути нет суффикса, вместо него добавляется новый *suffix*. Если *suffix* – пустая строка, исходный суффикс удаляется:613614```python615>>> p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')616>>> p.with_suffix('.bz2')617PureWindowsPath('c:/Downloads/pathlib.tar.bz2')618>>> p = PureWindowsPath('README')619>>> p.with_suffix('.txt')620PureWindowsPath('README.txt')621>>> p = PureWindowsPath('README.txt')622>>> p.with_suffix('')623PureWindowsPath('README')624```625626## Конкретные пути627628Конкретные пути – это подклассы чистых классов путей. В дополнение к операциям, предоставляемым последними, они также предоставляют методы для выполнения системных вызовов над объектами путей. Есть три способа создания конкретных путей:629630#### `class pathlib.Path(*pathsegments)`631632Подкласс [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath); этот класс представляет конкретные пути, соответствующие flavour данной файловой системы (при создании экземпляра создаётся либо [`PosixPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PosixPath), либо [`WindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.WindowsPath)):633634```python635>>> Path('setup.py')636PosixPath('setup.py')637```638639Параметр *pathsegments* задаётся так же, как [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).640641#### `class pathlib.PosixPath(*pathsegments)`642643Подкласс [`Path`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path) и [`PurePosixPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePosixPath); этот класс представляет конкретные пути для файловых систем, отличных от Windows:644645```python646>>> PosixPath('/etc')647PosixPath('/etc')648```649650Параметр *pathsegments* задаётся так же, как [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).651652#### `class pathlib.WindowsPath(*pathsegments)`653654Подкласс [`Path`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path) и [`PureWindowsPath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PureWindowsPath); этот класс представляет конкретные пути файловой системы Windows:655656```python657>>> WindowsPath('c:/Program Files/')658WindowsPath('c:/Program Files')659```660661Параметр *pathsegments* задаётся так же, как [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).662663Можно создать экземпляр только того flavour класса, который соответствует системе (использование системных вызовов для несовместимых flavour путей может привести к ошибкам или сбоям в приложении):664665```python666>>> import os667>>> os.name668'posix'669>>> Path('setup.py')670PosixPath('setup.py')671>>> PosixPath('setup.py')672PosixPath('setup.py')673>>> WindowsPath('setup.py')674Traceback (most recent call last):675  File "<stdin>", line 1, in <module>676  File "pathlib.py", line 798, in __new__677    % (cls.__name__,))678NotImplementedError: cannot instantiate 'WindowsPath' on your system679```680681### Методы682683Конкретные пути предоставляют следующие методы в дополнение к методам чистых путей методы. Многие из этих методов могут вызывать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError), если системный вызов завершается неудачей (например, из-за того, что путь не существует).684685Изменено в версии 3.8: Методы [`exists()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.exists), [`is_dir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_dir), [`is_file()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_file), [`is_mount()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_mount), [`is_symlink()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_symlink), [`is_block_device()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_block_device), [`is_char_device()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_char_device), [`is_fifo()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_fifo), [`is_socket()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_socket) теперь возвращают `False` вместо возбуждения исключения для путей, содержащих символы, непредставимые на уровне ОС.686687#### `classmethod Path.cwd()`688689Возвращает новый объект пути, представляющий текущий каталог (как возвращается [`os.getcwd()`](https://python-all.ru/3.9/library/os.html#os.getcwd)):690691```python692>>> Path.cwd()693PosixPath('/home/antoine/pathlib')694```695696#### `classmethod Path.home()`697698Возвращает новый объект пути, представляющий домашний каталог пользователя (как возвращается [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser) с конструкцией `~`):699700```python701>>> Path.home()702PosixPath('/home/antoine')703```704705Обратите внимание, что в отличие от [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser), в системах POSIX будет возбуждено [`KeyError`](https://python-all.ru/3.9/library/exceptions.html#KeyError) или [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError), а в системах Windows – [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError), если домашний каталог не удаётся определить.706707Новое в версии 3.5.708709#### `Path.stat()`710711Возвращает объект [`os.stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result), содержащий информацию об этом пути, например [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat). Результат запрашивается при каждом вызове этого метода.712713```python714>>> p = Path('setup.py')715>>> p.stat().st_size716956717>>> p.stat().st_mtime7181327883547.852554719```720721#### `Path.chmod(mode)`722723Изменяет режим файла и права доступа, как [`os.chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod):724725```python726>>> p = Path('setup.py')727>>> p.stat().st_mode72833277729>>> p.chmod(0o444)730>>> p.stat().st_mode73133060732```733734#### `Path.exists()`735736Указывает ли путь на существующий файл или каталог:737738```python739>>> Path('.').exists()740True741>>> Path('setup.py').exists()742True743>>> Path('/etc').exists()744True745>>> Path('nonexistentfile').exists()746False747```748749> **Примечание**750>751> Если путь указывает на символическую ссылку, [`exists()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.exists) возвращает, *указывает ли* симлинк на существующий файл или каталог.752753#### `Path.expanduser()`754755Возвращает новый путь с развёрнутыми конструкциями `~` и `~user`, как возвращается функцией [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser):756757```python758>>> p = PosixPath('~/films/Monty Python')759>>> p.expanduser()760PosixPath('/home/eric/films/Monty Python')761```762763Обратите внимание, что в отличие от [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser), в системах POSIX будет возбуждено [`KeyError`](https://python-all.ru/3.9/library/exceptions.html#KeyError) или [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError), а в системах Windows – [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError), если домашний каталог не удаётся определить.764765Новое в версии 3.5.766767#### `Path.glob(pattern)`768769Выполняет поиск по заданному относительному *pattern* в каталоге, представленном этим путем, возвращая все совпадающие файлы (любого типа):770771```python772>>> sorted(Path('.').glob('*.py'))773[PosixPath('pathlib.py'), PosixPath('setup.py'), PosixPath('test_pathlib.py')]774>>> sorted(Path('.').glob('*/*.py'))775[PosixPath('docs/conf.py')]776```777778Шаблон «`**`» означает «этот каталог и все его подкаталоги рекурсивно». Другими словами, он включает рекурсивный поиск по шаблону:779780```python781>>> sorted(Path('.').glob('**/*.py'))782[PosixPath('build/lib/pathlib.py'),783 PosixPath('docs/conf.py'),784 PosixPath('pathlib.py'),785 PosixPath('setup.py'),786 PosixPath('test_pathlib.py')]787```788789> **Примечание**790>791> Использование шаблона «`**`» в больших деревьях каталогов может занять чрезмерно много времени.792793Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `pathlib.Path.glob` с аргументами `self`, `pattern`.794795#### `Path.group()`796797Возвращает имя группы-владельца файла. [`KeyError`](https://python-all.ru/3.9/library/exceptions.html#KeyError) вызывается, если gid файла не найден в системной базе данных.798799#### `Path.is_dir()`800801Возвращает `True`, если путь указывает на каталог (или символическую ссылку на каталог), и `False`, если указывает на файл другого типа.802803`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.804805#### `Path.is_file()`806807Возвращает `True`, если путь указывает на обычный файл (или символическую ссылку на обычный файл), и `False`, если указывает на файл другого типа.808809`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.810811#### `Path.is_mount()`812813Возвращает `True`, если путь является *точкой монтирования*: точкой в файловой системе, куда смонтирована другая файловая система. На POSIX функция проверяет, находится ли родительский каталог *path*, `path/..`, на другом устройстве, чем *path*, или указывают ли `path/..` и *path* на один и тот же индексный дескриптор на одном устройстве – это должно определять точки монтирования для всех вариантов Unix и POSIX. Не реализовано в Windows.814815Добавлено в версии 3.7.816817#### `Path.is_symlink()`818819Возвращает `True`, если путь указывает на символическую ссылку, иначе `False`.820821`False` также возвращается, если путь не существует; другие ошибки (например, ошибки прав доступа) передаются дальше.822823#### `Path.is_socket()`824825Возвращает `True`, если путь указывает на сокет Unix (или на символическую ссылку, указывающую на сокет Unix), `False` если он указывает на файл другого типа.826827`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.828829#### `Path.is_fifo()`830831Возвращает `True`, если путь указывает на FIFO (или на символическую ссылку, указывающую на FIFO), `False` если он указывает на файл другого типа.832833`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.834835#### `Path.is_block_device()`836837Возвращает `True`, если путь указывает на блочное устройство (или на символическую ссылку, указывающую на блочное устройство), `False` если он указывает на файл другого типа.838839`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.840841#### `Path.is_char_device()`842843Возвращает `True`, если путь указывает на символьное устройство (или на символическую ссылку, указывающую на символьное устройство), `False` если он указывает на файл другого типа.844845`False` также возвращается, если путь не существует или является битой символьной ссылкой; другие ошибки (например, ошибки прав доступа) передаются.846847#### `Path.iterdir()`848849Если путь указывает на каталог, возвращает объекты пути для его содержимого:850851```python852>>> p = Path('docs')853>>> for child in p.iterdir(): child854...855PosixPath('docs/conf.py')856PosixPath('docs/_templates')857PosixPath('docs/make.bat')858PosixPath('docs/index.rst')859PosixPath('docs/_build')860PosixPath('docs/_static')861PosixPath('docs/Makefile')862```863864Дочерние элементы возвращаются в произвольном порядке, а специальные записи `'.'` и `'..'` не включаются. Если файл удаляется из каталога или добавляется в него после создания итератора, то будет ли включён объект пути для этого файла, не определено.865866#### `Path.lchmod(mode)`867868Как [`Path.chmod()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.chmod), но если путь указывает на символьную ссылку, то изменяется режим самой символьной ссылки, а не её цели.869870#### `Path.lstat()`871872Как [`Path.stat()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.stat), но если путь указывает на симлинк, возвращает информацию о симлинке, а не о его цели.873874#### `Path.mkdir(mode=0o777, parents=False, exist_ok=False)`875876Создаёт новый каталог по указанному пути. Если указан параметр *mode*, он комбинируется со значением `umask` процесса для определения режима файла и флагов доступа. Если путь уже существует, [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError) вызывается.877878Если *parents* равен true, любые отсутствующие родительские каталоги этого пути создаются по мере необходимости; они создаются с правами по умолчанию без учёта *mode* (имитируя команду POSIX `mkdir -p`).879880Если *parents* равен false (по умолчанию), отсутствие родительского каталога вызывает [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError).881882Если *exist\_ok* равен false (по умолчанию), [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError) возбуждается, если целевой каталог уже существует.883884Если *exist\_ok* имеет значение true, [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError) исключения будут проигнорированы (аналогично поведению команды POSIX `mkdir -p`), но только если последний компонент пути не является существующим файлом, отличным от каталога.885886Изменено в версии 3.5: Добавлен параметр *exist\_ok*.887888#### `Path.open(mode='r', buffering=-1, encoding=None, errors=None, newline=None)`889890Открывает файл, на который указывает путь, как это делает встроенная функция [`open()`](https://python-all.ru/3.9/library/functions.html#open) :891892```python893>>> p = Path('setup.py')894>>> with p.open() as f:895...     f.readline()896...897'#!/usr/bin/env python3\n'898```899900#### `Path.owner()`901902Возвращает имя пользователя-владельца файла. [`KeyError`](https://python-all.ru/3.9/library/exceptions.html#KeyError) вызывается, если uid файла не найден в системной базе данных.903904#### `Path.read_bytes()`905906Возвращает двоичное содержимое файла, на который указывает путь, в виде объекта bytes:907908```python909>>> p = Path('my_binary_file')910>>> p.write_bytes(b'Binary file contents')91120912>>> p.read_bytes()913b'Binary file contents'914```915916Новое в версии 3.5.917918#### `Path.read_text(encoding=None, errors=None)`919920Возвращает декодированное содержимое файла, на который указывает путь, в виде строки:921922```python923>>> p = Path('my_text_file')924>>> p.write_text('Text file contents')92518926>>> p.read_text()927'Text file contents'928```929930Файл открывается, а затем закрывается. Необязательные параметры имеют тот же смысл, что и в [`open()`](https://python-all.ru/3.9/library/functions.html#open).931932Новое в версии 3.5.933934#### `Path.readlink()`935936Возвращает путь, на который указывает симлинк (как возвращается [`os.readlink()`](https://python-all.ru/3.9/library/os.html#os.readlink)):937938```python939>>> p = Path('mylink')940>>> p.symlink_to('setup.py')941>>> p.readlink()942PosixPath('setup.py')943```944945Новое в версии 3.9.946947#### `Path.rename(target)`948949Переименовывает этот файл или каталог в указанный *target* и возвращает новый объект Path, указывающий на *target*. В Unix, если *target* существует и является файлом, он будет бесшумно заменён, если у пользователя есть права. *target* может быть как строкой, так и другим объектом пути:950951```python952>>> p = Path('foo')953>>> p.open('w').write('some text')9549955>>> target = Path('bar')956>>> p.rename(target)957PosixPath('bar')958>>> target.open().read()959'some text'960```961962Целевой путь может быть абсолютным или относительным. Относительные пути интерпретируются относительно текущей рабочей директории, а *не* директории объекта Path.963964Изменено в версии 3.8: Добавлено возвращаемое значение – теперь возвращается новый экземпляр Path.965966#### `Path.replace(target)`967968Переименовывает этот файл или каталог в указанный *target* и возвращает новый экземпляр Path, указывающий на *target*. Если *target* указывает на существующий файл или пустой каталог, он будет безусловно заменён.969970Целевой путь может быть абсолютным или относительным. Относительные пути интерпретируются относительно текущей рабочей директории, а *не* директории объекта Path.971972Изменено в версии 3.8: Добавлено возвращаемое значение – теперь возвращается новый экземпляр Path.973974#### `Path.resolve(strict=False)`975976Делает путь абсолютным, разрешая все символические ссылки. Возвращается новый объект пути:977978```python979>>> p = Path()980>>> p981PosixPath('.')982>>> p.resolve()983PosixPath('/home/antoine/pathlib')984```985986`..`” компоненты также удаляются (это единственный метод, который это делает):987988```python989>>> p = Path('docs/../setup.py')990>>> p.resolve()991PosixPath('/home/antoine/pathlib/setup.py')992```993994Если путь не существует и *strict* равен `True`, возникает [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError). Если *strict* равен `False`, путь разрешается настолько, насколько возможно, и остаток добавляется без проверки на существование. Если во время разрешения пути встречается бесконечный цикл, возникает [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError).995996Новое в версии 3.6: Аргумент *strict* (поведение до версии 3.6 – строгое).997998#### `Path.rglob(pattern)`9991000Это аналогично вызову [`Path.glob()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.glob) с добавлением «`**/`» перед указанным относительным *pattern*:10011002```python1003>>> sorted(Path().rglob("*.py"))1004[PosixPath('build/lib/pathlib.py'),1005 PosixPath('docs/conf.py'),1006 PosixPath('pathlib.py'),1007 PosixPath('setup.py'),1008 PosixPath('test_pathlib.py')]1009```10101011Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `pathlib.Path.rglob` с аргументами `self`, `pattern`.10121013#### `Path.rmdir()`10141015Удаляет этот каталог. Каталог должен быть пустым.10161017#### `Path.samefile(other_path)`10181019Возвращает, указывает ли этот путь на тот же файл, что и *other\_path*, который может быть как объектом Path, так и строкой. Семантика аналогична [`os.path.samefile()`](https://python-all.ru/3.9/library/os.path.html#os.path.samefile) и [`os.path.samestat()`](https://python-all.ru/3.9/library/os.path.html#os.path.samestat).10201021Исключение [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) может быть возбуждено, если какой-либо из файлов недоступен по какой-либо причине.10221023```python1024>>> p = Path('spam')1025>>> q = Path('eggs')1026>>> p.samefile(q)1027False1028>>> p.samefile('spam')1029True1030```10311032Новое в версии 3.5.10331034#### `Path.symlink_to(target, target_is_directory=False)`10351036Сделать этот путь символической ссылкой на *target*. В Windows *target\_is\_directory* должно иметь значение true (по умолчанию `False`), если цель ссылки является каталогом. В POSIX значение *target\_is\_directory* игнорируется.10371038```python1039>>> p = Path('mylink')1040>>> p.symlink_to('setup.py')1041>>> p.resolve()1042PosixPath('/home/antoine/pathlib/setup.py')1043>>> p.stat().st_size10449561045>>> p.lstat().st_size104681047```10481049> **Примечание**1050>1051> Порядок аргументов (ссылка, цель) обратный по сравнению с [`os.symlink()`](https://python-all.ru/3.9/library/os.html#os.symlink).10521053#### `Path.link_to(target)`10541055Создаёт жёсткую ссылку *target* на этот путь.10561057> **Предупреждение**1058>1059> Эта функция не создаёт жёсткую ссылку на *target* для данного пути, несмотря на название функции и имена аргументов. Порядок аргументов (target, link) обратен порядку в [`Path.symlink_to()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.symlink_to), но совпадает с порядком в [`os.link()`](https://python-all.ru/3.9/library/os.html#os.link).10601061Новое в версии 3.8.10621063#### `Path.touch(mode=0o666, exist_ok=True)`10641065Создаёт файл по указанному пути. Если задан *mode*, он комбинируется со значением `umask` процесса для определения режима файла и флагов доступа. Если файл уже существует, функция завершается успешно, если *exist\_ok* равен true (при этом время изменения файла обновляется до текущего), в противном случае вызывается исключение [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError).10661067#### `Path.unlink(missing_ok=False)`10681069Удаляет этот файл или символическую ссылку. Если путь указывает на каталог, используйте [`Path.rmdir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.rmdir).10701071Если *missing\_ok* равно false (по умолчанию), [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError) вызывается, если путь не существует.10721073Если *missing\_ok* равно true, исключения [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError) будут игнорироваться (аналогично поведению команды POSIX `rm -f`).10741075Изменено в версии 3.8: Добавлен параметр *missing\_ok*.10761077#### `Path.write_bytes(data)`10781079Открывает файл в байтовом режиме, записывает в него *data* и закрывает файл:10801081```python1082>>> p = Path('my_binary_file')1083>>> p.write_bytes(b'Binary file contents')1084201085>>> p.read_bytes()1086b'Binary file contents'1087```10881089Существующий файл с таким же именем перезаписывается.10901091Новое в версии 3.5.10921093#### `Path.write_text(data, encoding=None, errors=None)`10941095Открывает файл в текстовом режиме, записывает в него *data* и закрывает файл:10961097```python1098>>> p = Path('my_text_file')1099>>> p.write_text('Text file contents')1100181101>>> p.read_text()1102'Text file contents'1103```11041105Существующий файл с таким же именем перезаписывается. Необязательные параметры имеют тот же смысл, что и в [`open()`](https://python-all.ru/3.9/library/functions.html#open).11061107Новое в версии 3.5.11081109## Соответствие инструментам в модуле [`os`](https://python-all.ru/3.9/library/os.html#module-os)11101111Ниже представлена таблица, сопоставляющая различные функции [`os`](https://python-all.ru/3.9/library/os.html#module-os) с их эквивалентами в [`PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath)/[`Path`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path).11121113> **Примечание**1114>1115> Хотя [`os.path.relpath()`](https://python-all.ru/3.9/library/os.path.html#os.path.relpath) и [`PurePath.relative_to()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.relative_to) имеют некоторые пересекающиеся случаи использования, их семантика различается настолько, что не позволяет считать их эквивалентными.11161117| os and os.path | pathlib |1118| --- | --- |1119| [`os.path.abspath()`](https://python-all.ru/3.9/library/os.path.html#os.path.abspath) | [`Path.resolve()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.resolve) |1120| [`os.chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod) | [`Path.chmod()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.chmod) |1121| [`os.mkdir()`](https://python-all.ru/3.9/library/os.html#os.mkdir) | [`Path.mkdir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.mkdir) |1122| [`os.makedirs()`](https://python-all.ru/3.9/library/os.html#os.makedirs) | [`Path.mkdir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.mkdir) |1123| [`os.rename()`](https://python-all.ru/3.9/library/os.html#os.rename) | [`Path.rename()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.rename) |1124| [`os.replace()`](https://python-all.ru/3.9/library/os.html#os.replace) | [`Path.replace()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.replace) |1125| [`os.rmdir()`](https://python-all.ru/3.9/library/os.html#os.rmdir) | [`Path.rmdir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.rmdir) |1126| [`os.remove()`](https://python-all.ru/3.9/library/os.html#os.remove), [`os.unlink()`](https://python-all.ru/3.9/library/os.html#os.unlink) | [`Path.unlink()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.unlink) |1127| [`os.getcwd()`](https://python-all.ru/3.9/library/os.html#os.getcwd) | [`Path.cwd()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.cwd) |1128| [`os.path.exists()`](https://python-all.ru/3.9/library/os.path.html#os.path.exists) | [`Path.exists()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.exists) |1129| [`os.path.expanduser()`](https://python-all.ru/3.9/library/os.path.html#os.path.expanduser) | [`Path.expanduser()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.expanduser) и [`Path.home()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.home) |1130| [`os.listdir()`](https://python-all.ru/3.9/library/os.html#os.listdir) | [`Path.iterdir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.iterdir) |1131| [`os.path.isdir()`](https://python-all.ru/3.9/library/os.path.html#os.path.isdir) | [`Path.is_dir()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_dir) |1132| [`os.path.isfile()`](https://python-all.ru/3.9/library/os.path.html#os.path.isfile) | [`Path.is_file()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_file) |1133| [`os.path.islink()`](https://python-all.ru/3.9/library/os.path.html#os.path.islink) | [`Path.is_symlink()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.is_symlink) |1134| [`os.link()`](https://python-all.ru/3.9/library/os.html#os.link) | [`Path.link_to()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.link_to) |1135| [`os.symlink()`](https://python-all.ru/3.9/library/os.html#os.symlink) | [`Path.symlink_to()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.symlink_to) |1136| [`os.readlink()`](https://python-all.ru/3.9/library/os.html#os.readlink) | [`Path.readlink()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.readlink) |1137| [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat) | [`Path.stat()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.stat), [`Path.owner()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.owner), [`Path.group()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.group) |1138| [`os.path.isabs()`](https://python-all.ru/3.9/library/os.path.html#os.path.isabs) | [`PurePath.is_absolute()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.is_absolute) |1139| [`os.path.join()`](https://python-all.ru/3.9/library/os.path.html#os.path.join) | [`PurePath.joinpath()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.joinpath) |1140| [`os.path.basename()`](https://python-all.ru/3.9/library/os.path.html#os.path.basename) | [`PurePath.name`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.name) |1141| [`os.path.dirname()`](https://python-all.ru/3.9/library/os.path.html#os.path.dirname) | [`PurePath.parent`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.parent) |1142| [`os.path.samefile()`](https://python-all.ru/3.9/library/os.path.html#os.path.samefile) | [`Path.samefile()`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path.samefile) |1143| [`os.path.splitext()`](https://python-all.ru/3.9/library/os.path.html#os.path.splitext) | [`PurePath.suffix`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath.suffix) |1144