Очень полезный модуль, который по сути объединяет в себе часто используемые функции двух стандартных модулей os
и os.path
, а так же стандартную функцию open()
для чтения файла и записи в файл какой либо информации.
Модуль pathlib
предлагает классы, представляющие пути файловой системы с семантикой, подходящей для различных операционных систем. Классы путей делятся между чистыми путями, которые обеспечивают чисто вычислительные операции без ввода-вывода и конкретными путями, которые наследуются от чистых путей, но также обеспечивают операции ввода-вывода.
Если вы никогда ранее не использовали этот модуль или просто не уверены, какой класс подходит для вашей задачи, то лучше использовать pathlib.Path()
, т. к. он создает конкретный путь для платформы, на которой выполняется код.
Чистые пути полезны в некоторых особых случаях:
WindowsPath
при работе в Unix, для этого создается экземпляр PureWindowsPath
.Импорт основного класса:
>>> 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('/') >>> x = p / 'etc' / 'fstab' >>> x # PosixPath('/etc/fstab') # Для преобразования пути в строку просто # передайте объект пути в функцию str() >>> str(x) # '/etc/fstab' >>> x.resolve() # PosixPath('/etc/fstab')
Запрос свойств пути:
>>> q.exists() # True >>> q.is_dir() # False
Открытие файла:
>>> with q.open() as f: f.readline() ... '# /etc/fstab: static file system information.\n'