pathlib
предоставляет объектно-ориентированный способ работы с файловыми путями. Основные моменты:
from pathlib import Path; path = Path("my_directory/my_file.txt")
path.exists(), path.is_file(), path.is_dir(), path.name, path.parent, path.absolute()
path.read_text(), path.write_text("Hello, world!"), path.read_bytes(), path.write_bytes(b"...")
path.mkdir(parents=True, exist_ok=True), path.rmdir(), path.iterdir(), path.glob("*.txt")
path.with_name("new_name.txt"), path.with_suffix(".csv"), path / "sub_directory"
pathlib
упрощает и делает код более читаемым по сравнению с использованием строковых манипуляций для работы с путями.
Модуль `pathlib` предоставляет объектно-ориентированный способ работы с файловыми путями. Вместо использования строковых представлений путей и функций из модуля `os.path`, `pathlib` предлагает класс `Path`, который позволяет манипулировать путями более интуитивно и безопасно.
from pathlib import Path
# Создание объекта Path для текущей директории
current_dir = Path('.')
print(f"Текущая директория: {current_dir.resolve()}")
# Создание объекта Path для абсолютного пути
absolute_path = Path('/home/user/documents/my_file.txt')
print(f"Абсолютный путь: {absolute_path}")
# Создание объекта Path из строки
path_from_string = Path("my_folder/sub_folder/data.csv")
print(f"Путь из строки: {path_from_string}")
from pathlib import Path
# Переход в поддиректорию
parent_dir = Path('/home/user/documents')
sub_dir = parent_dir / 'my_project'
print(f"Путь к поддиректории: {sub_dir}")
# Переход к родительской директории
parent = sub_dir.parent
print(f"Родительская директория: {parent}")
# Получение всех файлов и директорий в директории
directory = Path('.') # Текущая директория
for item in directory.iterdir():
print(item)
from pathlib import Path
file_path = Path('my_file.txt')
if file_path.exists():
print("Файл существует")
else:
print("Файл не существует")
if file_path.is_file():
print("Это файл")
if file_path.is_dir():
print("Это директория")
if file_path.is_symlink():
print("Это символическая ссылка")
from pathlib import Path
# Создание директории
new_dir = Path('new_directory')
new_dir.mkdir(exist_ok=True) # exist_ok=True предотвращает ошибку, если директория уже существует
# Создание файла
new_file = new_dir / 'new_file.txt'
new_file.touch() # Создает пустой файл
# Запись в файл
new_file.write_text("Привет, мир!")
# Чтение из файла
content = new_file.read_text()
print(f"Содержимое файла: {content}")
# Удаление файла
new_file.unlink()
# Удаление директории (должна быть пустой)
new_dir.rmdir()
from pathlib import Path
file_path = Path('/home/user/documents/my_file.txt')
# Получение имени файла без расширения
file_name = file_path.stem
print(f"Имя файла: {file_name}")
# Получение расширения файла
file_extension = file_path.suffix
print(f"Расширение файла: {file_extension}")
# Замена расширения файла
new_file_path = file_path.with_suffix('.csv')
print(f"Новый путь: {new_file_path}")
# Получение имени файла с расширением
full_name = file_path.name
print(f"Полное имя файла: {full_name}")
from pathlib import Path
# Поиск всех файлов .txt в текущей директории
for file in Path('.').glob('*.txt'):
print(file)
# Рекурсивный поиск всех файлов .py во всех поддиректориях
for file in Path('.').rglob('*.py'):
print(file)
Использование `pathlib` делает код более читаемым, понятным и менее подверженным ошибкам, связанным с неправильной обработкой путей.