pathlib

New in version python: 3.4

import pathlib

Path()

class pathlib.Path
from pathlib import Path

Path(r'C:\Users\ilnurgi\test.txt')
# WindowsPath('C:/Users/ilnurgi/test.txt')

path = Path.home() / 'ilnurgi.txt'
# PosixPath('/home/ilnurgi/ilnurgi.txt')

with path.open(mode='r') as f:
    pass
anchor
Path.home().anchor
# '/'

# windows
Path('c:/Program Files/').anchor
# 'c:\\'

# windows
Path('c:Program Files/').anchor
# 'c:'

# windows
Path('//host/share').anchor
# '\\\\host\\share\\'
drive
# windows
Path('c:/Program Files/').drive
# 'c:'

# windows
Path('/Program Files/').drive
# ''

# windows
PureWindowsPath('//host/share/foo.txt').drive
# '\\\\host\\share'

Path('/etc').drive
# ''
name

Имя файла без пути, но с расширением

Path.home().name
# ilnurgi
parent

Родительская папка объекта

Path.home().parent
# PosixPath('/home')
parents

Возвращает список родителей

Path.home().parents
"""
[
    Path('/home'),
    Path('/'),
]
"""
parts

Возвращает кортеж пути

Path.home().parts
# ('/', 'home', 'ilnurgi')

# windows
Path.home().parts
# ('c:\\', 'Users', 'ilnurgi')
root

Корень пути

# windows
Path('c:/Program Files/').root
# '\\'

# windows
Path('c:Program Files/').root
# ''

# windows
Path('//host/share').root
# '\\'

PurePosixPath('/etc').root
'/'
stem

Имя файла без расширения

(Path.home() / 'ilnurgi.txt').stem
# 'ilnurgi'
suffix

Расширение файла

(Path.home() / 'ilnurgi.txt').suffix
# '.txt'
suffixes

Расширение файла

(Path.home() / 'ilnurgi.tar.gz').suffixes
# ('.tar', '.gz')
as_posix()

Возвращает путь в формате posix

Path('c:\\windows').as_posix()
# 'c:\\windows'
as_uri()

Возвращает путь в формате URI

Path('/etc/passwd').as_uri()
# 'file:///etc/passwd'

Path('c:/Windows').as_uri()
# 'file:///c:/Windows'
chmod(mod)

Меняет права, также как и os.chmod()

Path('setup.py').stat().st_mode
# 33277

Path('setup.py').chmod(0o444)

Path('setup.py').stat().st_mode
# 33060
cwd()

Возвращает путь до рабочей директории

Path.cwd()
# PosixPath('/home/ilnurgi/')
exists()

Существует ли путь

Path.home().exists()
# True
expanduser()

New in version python: 3.5

Путь до домашней папки пользователя, os.path.expanduser()

Path.cwd().expanduser()
# '/home/ilnurgi/'
glob(pattern)

Возвращет все файлы по вхождению

Path.home().glob('*.py')
# ['ilnurgi.py']
group()

Возвращает имя группы владельца пути

Path.home().group
# 'ilnurgi_group'
home()

New in version python: 3.5

Возвращает путь до домашней папки пользователя

Path.home()
# PosixPath('/home/ilnurgi')
is_absolute()

Является ли путь абсолютным

Path.home().is_absolute()
# True
is_block_device()
Path.home().is_block_device()
# False
is_char_device()
Path.home().is_char_device()
# False
is_dir()

Путь является папкой

Path.home().is_dir()
# True
is_fifo()
Path.home().is_fifo()
# False
is_file()

Путь является файлом

Path.home().is_file()
# False
is_mount()

Путь является примонтированным объектом

Path.home().is_mount()
# False
is_reserved()

Является ли путь зарезервированным, актуально для windows

PureWindowsPath('nul').is_reserved()
# True
is_socket()

Является ли путь сокетом

Path.home().is_socket()
# False

Является ли путь симлинком

Path.home().is_symlink()
# False
iterdir()

Возвращает генератор, списко объектов в директории

for i in Path.home().iterdir():
    print(i)

# PosixPath('/home/ilnurgi/ilnurgi.txt')
# ...
joinpath(*other)

Объединяет пути

Path.home().joinpath('ilnurgi.txt')
# '/home/ilnurgi/ilnurgi.txt'
lchmod(mode)

Также как и Path.chmod() меняет права и для символьных ссылок тоже

Path('setup.py').lchmod(0o444)
lstat()

Возвращает сведения по пути, os.stat() и для сивольных ссылок

match(pattern)
Path.home().joinpath('ilnurgi.txt').match('*.txt')
# True
mkdir(mode=0o777, parents=False, exist_ok=False)

Создает файл по указанному пути

(Path.home() / 'ilnurgi').mkdir()
open()

Открывает и возвращает файловый дескриптор

with Path('setup.py').open() as f:
    ...
owner()

Возвращает автора файла

Path.home().owner()
# 'ilnurgi'
read_bytes()

New in version python: 3.5

Читает и возвращает байтовое содержимое объекта

(Path.home() / 'ilnurgi.txt').read_bytes()
# b'Hello ilnurgi!'
read_text(encoding=None, errors=None)

New in version python: 3.5

Читает и возвращает строковое содержимое объекта

(Path.home() / 'ilnurgi.txt').read_text()
# 'Hello ilnurgi!'
relative_to(*other)
PurePosixPath('/etc/passwd').relative_to('/')
# PurePosixPath('etc/passwd')

PurePosixPath('/etc/passwd').relative_to('/etc')
# PurePosixPath('passwd')

PurePosixPath('/etc/passwd').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'
"""
rename(target)

Переименовывает объект по пути

(Path.home() / 'ilnurgi.txt').rename('ilnurgi.log')
resolve(strict=False)

New in version параметр: strict добавлен python 3.6

Возвращает полный путь до объекта

Path.home().resolve()
# PosixPath('/home/ilnurgi/')
rglob(pattern)

Рекурсивный обход пути по поиску объектов

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

Удаляет папку по пути, папка должна быть пустая

samefile()

New in version python: 3.5

stat()

Возвращает сведения по пути, os.stat()

Создает симлинк по указанному target

Path.home().symlink_to(Path.home() / 'home_ilnurgi')
touch(mode=0o666, exist_ok=True)

Создает файл по указанному пути

(Path.home() / 'ilnurgi.txt').touch()

Удаляет файл или символическую ссылку.

with_name(name)

Меняет имя у пути

(Path.home() / 'ilnurgi.txt').with_name('ilnurgi.log')
# PosixPath('/home/ilnurgi/ilnurgi.log')
with_suffix(suffix)

Меняет расширение у файла

(Path.home() / 'ilnurgi.txt').with_suffix('.log')
# PosixPath('/home/ilnurgi/ilnurgi.log')
write_bytes(data)

New in version python: 3.5

Записывает байты данных в файл

(Path.home() / 'ilnurgi.txt').write_bytes(b'Hello ilnurgi!')
# 10
write_text(data, encoding=None, errors=None)

New in version python: 3.5

Записывает строковые данные в файл

(Path.home() / 'ilnurgi.txt').write_text('Hello ilnurgi!')
# 20