pathlib — Объектно-ориентированные пути к файлам системы
Новое в версии 3.4.
Исходный код: Lib/pathlib.py
Этот модуль предлагает классы, представляющие пути к файлам системы с семантикой, подходящей для разных операционных систем. Классы путей делятся на чистые пути, которые обеспечивают чисто вычислительные операции без ввода-вывода, и конкретные пути, которые наследуются от чистых путей, но также обеспечивают операции ввода-вывода.
Если вы никогда раньше не использовали этот модуль или просто не уверены, какой класс подходит для вашей задачи, Path — это, скорее всего, то, что вам нужно. Он создаёт конкретный путь для платформы, на которой выполняется код.
Чистые пути полезны в некоторых особых случаях; например:
- Если вы хотите манипулировать путями Windows на Unix-машине (или наоборот). Вы не можете создать
WindowsPathпри работе на Unix, но вы можете создатьPureWindowsPath. - Вы хотите убедиться, что ваш код манипулирует путями, не обращаясь к ОС. В этом случае создание одного из чистых классов может быть полезно, поскольку они просто не имеют операций доступа к ОС.
См. также
PEP 428: Модуль pathlib — объектно-ориентированные пути к файлам системы.
См. также
Для низкоуровневой манипуляции путями в строках вы также можете использовать модуль os.path.
11.1.1. Базовое использование
Импорт основного класса:
>>> 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'
11.1.2. Чистые пути
Объекты чистых путей предоставляют операции обработки путей, которые фактически не обращаются к файловой системе. Есть три способа доступа к этим классам, которые мы также называем вариантами:
-
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.
Независимо от операционной системы, на которой вы работаете, вы можете создать все эти классы, так как они не предоставляют операций, которые выполняют системные вызовы.
11.1.2.1. Общие свойства
Пути неизменяемы и хешируемы. Пути одного и того же типа сравнимы и упорядочиваемы. Эти свойства учитывают семантику изменения регистра типов.
>>> 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'
11.1.2.2. Операторы
Оператор слэша помогает создавать дочерние пути, аналогично 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(p) b'/etc'
Примечание
Вызов bytes рекомендуется только в Unix. В Windows формой с юникодом является каноническое представление путей к файлам.
11.1.2.3. Доступ к отдельным частям
Для доступа к отдельным «частям» (компонентам) пути используйте следующее свойство:
-
PurePath.parts -
Кортеж, позволяющий получить доступ к различным компонентам пути:
>>> p = PurePath('/usr/bin/python3') >>> p.parts ('/', 'usr', 'bin', 'python3') >>> p = PureWindowsPath('c:/Program Files/PSF') >>> p.parts ('c:\\', 'Program Files', 'PSF')(обратите внимание, как диск и локальный корень объединены в одной части)
11.1.2.4. Методы и свойства
-
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() -
Представляет путь в виде
fileURI.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, возвращаетTrue, если путь считается зарезервированным в Windows,Falseв противном случае. СPurePosixPath,Falseвсегда возвращается.>>> PureWindowsPath('nul').is_reserved() True >>> PurePosixPath('nul').is_reserved() FalseСистемные вызовы для зарезервированных путей могут загадочно завершаться ошибкой или иметь непреднамеренные последствия.
-
PurePath.joinpath(*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) -
Сопоставляет этот путь с предоставленным шаблоном в стиле glob. Возвращает
True, если сопоставление успешно,Falseв противном случае.Если шаблон относительный, путь может быть относительным или абсолютным, и сопоставление выполняется справа налево:
>>> 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Если шаблон абсолютный, путь также должен быть абсолютным, и весь путь должен совпадать:
>>> PurePath('/a.py').match('/*.py') True >>> PurePath('a/b.py').match('/*.py') FalseКак и в других методах, учитывается регистрозависимость:
>>> PureWindowsPath('b.py').match('*.PY') True
-
PurePath.relative_to(*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) -
Возвращает новый путь с изменённым расширением
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')
11.1.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
11.1.3.1. Методы
Конкретные пути предоставляют следующие методы помимо методов чистых путей. Многие из этих методов могут генерировать исключение OSError, если системный вызов завершается ошибкой (например, потому что путь не существует):
-
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()). Результат ищется при каждом вызове этого метода.>>> 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() -
Возвращает новый путь с расширенными
~и~userконструкциями, как возвращаетos.path.expanduser():>>> p = PosixPath('~/films/Monty Python') >>> p.expanduser() PosixPath('/home/eric/films/Monty Python')Добавлено в версии 3.5.
-
Path.glob(pattern) -
Ищет файлы, соответствующие шаблону 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_symlink() -
Возвращает
True, если путь указывает на символическую ссылку,Falseв противном случае.Falseтакже возвращается, если путь не существует; другие ошибки (например, ошибки доступа) передаются.
-
Path.is_socket() -
Возвращает
True, если путь указывает на Unix-сокет (или символическую ссылку, указывающую на Unix-сокет),Falseесли он указывает на другой тип файла.Falseтакже возвращается, если путь не существует или является прерванной символической ссылкой; другие ошибки (например, ошибки доступа) передаются.
-
Path.is_fifo() -
Возвращает
True, если путь указывает на FIFO (или символическую ссылку, указывающую на FIFO),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, все недостающие родительские каталоги по пути создаются по мере необходимости; они создаются с правами по умолчанию, не учитывая параметр mode (имитируя команду POSIX
mkdir -p).Если параметр parents имеет значение false (по умолчанию), отсутствие родительского каталога возбуждает исключение
FileNotFoundError.Если параметр exist_ok имеет значение false (по умолчанию), исключение
FileExistsErrorвозбуждается, если целевой каталог уже существует.Если параметр exist_ok имеет значение true, исключения
FileExistsErrorбудут игнорироваться (то же поведение, что и у команды POSIXmkdir -p), но только если последняя часть пути не является существующим файлом, который не является каталогом.Изменено в версии 3.5: Добавлен параметр exist_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возбуждается, если идентификатор пользователя файла не найден в системной базе данных.
-
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. В Unix, если target существует и является файлом, он будет заменён без предупреждений, если у пользователя есть соответствующие права. target может быть строкой или другим объектом пути:
>>> p = Path('foo') >>> p.open('w').write('some text') 9 >>> target = Path('bar') >>> p.rename(target) >>> target.open().read() 'some text'
-
Path.replace(target) -
Переименовывает этот файл или каталог в указанный target. Если target указывает на существующий файл или каталог, он будет безусловно заменён.
-
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')Если путь не существует, а параметр strict имеет значение
True, возбуждается исключениеFileNotFoundError. Если параметр strict имеет значениеFalse, путь разрешается по возможности, а остаток добавляется без проверки его существования. Если в процессе разрешения пути возникает бесконечный цикл, возбуждается исключениеRuntimeError.Новая в версии 3.6: Аргумент strict.
-
Path.rglob(pattern) -
Это эквивалентно вызову
Path.glob()с добавлением «**» перед заданным параметром pattern:>>> 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) -
Возвращает значение true, если этот путь указывает на тот же файл, что и 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) -
Преобразует этот путь в символическую ссылку на target. В 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.touch(mode=0o666, exist_ok=True) -
Создаёт файл по данному пути. Если задан параметр mode, он объединяется со значением режима доступа процесса
umask, чтобы определить режим файла и флаги доступа. Если файл уже существует, функция завершается успешно, если exist_ok имеет значение true (и время его последнего изменения обновляется до текущего времени), в противном случае возбуждается исключениеFileExistsError.
-
Path.unlink() -
Удаляет этот файл или символическую ссылку. Если путь указывает на каталог, используйте
Path.rmdir()вместо этого.
-
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'Новая в версии 3.5.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/pathlib.html