Автор оригинала: Pankaj Kumar.
Модуль Python Pathlib предоставляет объектно-ориентированный подход к работе с файлами и каталогами. Модуль PathLib имеет классы для работы с Unix, а также в средах Windows. Лучшая часть заключается в том, что нам не нужно беспокоиться о базовой операционной системе, модуль Pathlib заботится об использовании соответствующего класса на основе операционной системы.
Python Pathlib путь класса
Путь – самый важный класс в модуле Pathlib. Это точка входа всех функций, предоставленных модулем PATHLIB. Это заботится о создании реализации конкретного пути осуществления на основе операционной системы и сделать код независимой платформой.
Модуль Python Pathlib
Давайте посмотрим на несколько примеров использования модуля PathLib.
1. Список подкаталогов и файлов внутри каталога
Мы можем использовать функцию PATH ITERDIR (), чтобы повторить файлы в каталоге. Затем мы можем использовать функцию IS_DIR () для дифференцировки файла и каталога.
from pathlib import Path # list subdirectories and files inside a directory path = Path("/Users/pankaj/temp") subdirs = [] files = [] for x in path.iterdir(): # iterate over the files in the path if x.is_dir(): # condition to check if the file is a directory subdirs.append(x) else: files.append(x) print(subdirs) print(files)
Выход:
[PosixPath('/Users/pankaj/temp/spring-webflow-samples'), PosixPath('/Users/pankaj/temp/image-optim'), PosixPath('/Users/pankaj/temp/jersey2-example')] [PosixPath('/Users/pankaj/temp/test123.py'), PosixPath('/Users/pankaj/temp/.txt'), PosixPath('/Users/pankaj/temp/xyz.txt'), PosixPath('/Users/pankaj/temp/.DS_Store'), PosixPath('/Users/pankaj/temp/db.json'), PosixPath('/Users/pankaj/temp/Test.java'), PosixPath('/Users/pankaj/temp/routes.json'), PosixPath('/Users/pankaj/temp/itertools.py')]
Если вы запускаете одну и ту же программу в Windows, вы получите экземпляры WindowsPath.
2. Перечисление определенного типа файлов
Мы можем использовать функцию Path Chall (), чтобы повторить перечень файлов, соответствующих данному шаблону. Давайте использовать эту функцию, чтобы распечатать все сценарии Python внутри каталога.
from pathlib import Path path = Path("/Users/pankaj/temp") python_files = path.glob('**/*.py') for pf in python_files: print(pf)
Выход:
Python PathLib Список файлов
3. Разрешение символических ссылок на канонический путь
Мы можем использовать функцию разрешения () для преобразования символических ссылок на их канонический путь.
py2_path = Path("/usr/bin/python2.7") print(py2_path) print(py2_path.resolve())
Выход:
/usr/bin/python2.7 /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
4. Проверьте, существует ли файл или каталог
Путь существует () функция возвращает true, если путь существует, в противном случае он возвращает false.
path = Path("/Users/pankaj/temp") print(path.exists()) # True path = Path("/Users/pankaj/temp/random1234") print(path.exists()) # False
5. Открытие и чтение содержимого файла
Мы можем использовать Path Open () функцию, чтобы открыть файл. Он возвращает файловый объект, такой как встроенный открытый () функция.
file_path = Path("/Users/pankaj/temp/test.py") if file_path.exists() and file_path.is_file(): with file_path.open() as f: print(f.readlines())
Выход:
['import os\n', '\n', 'print("Hello World")\n']
6. Получение информации файла
Функция STAT () Path Object () делает системный вызов STAT () и вернуть результаты. Выход такой же, как функция модуля OS STAT ().
file_path = Path("/Users/pankaj/temp/test.py") print(file_path.stat())
Выход:
os.stat_result(st_mode=33188, st_ino=8623963104, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=32, st_atime=1566476310, st_mtime=1566476242, st_ctime=1566476242)
7. Получение имени файла или каталога
Мы можем использовать свойство «name», чтобы получить имя файла из объекта пути.
print(Path("/Users/pankaj/temp/test.py").name) print(Path("/Users/pankaj/temp/").name) print("Path without argument Name :", Path().name)
Выход:
test.py temp Path without argument Name :
8. Создание и удаление каталога
Мы можем использовать функцию MKDIR () для создания каталога. Мы можем использовать RMDIR (), чтобы удалить пустой каталог. Если есть файлы, то мы должны сначала удалить их, а затем удалить каталог.
directory = Path("/Users/pankaj/temp/temp_dir") print(directory.exists()) # False directory.mkdir() print(directory.exists()) # True directory.rmdir() print(directory.exists()) # False
9. Изменить режим файла
file = Path("/Users/pankaj/temp/test.py") file.chmod(0o777)
Функция CHMOD () ведет себя так же, как функция OS.chmod () для изменения разрешений файла.
10. Получение файловой группы и имя владельца
file = Path("/Users/pankaj/temp/test.py") print(file.group()) # staff print(file.owner()) # pankaj
11. Развернуть ~ к каноническому пути
path = Path("~/temp") print(path) # ~/temp path = path.expanduser() print(path) # /Users/pankaj/temp
12. CWD и домашний путь
print(Path.cwd()) print(Path.home())
Выход:
/Users/pankaj/Documents/PycharmProjects/PythonTutorials/hello-world /Users/pankaj
13. Присоединение к двум путям
path = Path.home() path = path.joinpath(Path("temp")) print(path) # /Users/pankaj/temp
14. Создание пустого файла
Также как команда Unix Touch, путь имеет функцию Touch () для создания пустого файла. Вы должны иметь разрешения для создания файла. В противном случае файл не будет создан, и не будет выброшен ошибки.
new_file = Path("/Users/pankaj/temp/xyz.txt") print(new_file.exists()) # False new_file.touch() print(new_file.exists()) # True
Python Pathlib создает новый файл
Заключение
Модуль Python Pathlib очень полезен для работы с файлами и каталогами в объектно-ориентированном способе. Свободно связанный и независимый от платформы код делает его более привлекательным для использования.