При работе с путями файлов в Python модуль pathlib предоставляет отличный способ обращения с ними в объектно-ориентированном стиле. Это улучшение по сравнению с использованием строковых манипуляций для путей файлов, что может быть ошибкоопасным и менее читаемым:
from pathlib import Path
p = Path('.') # '.' представляет текущую директорию
print(p, type(p)) # <class 'pathlib.PosixPath'> или <class 'pathlib.WindowsPath'> в зависимости от вашей операционной системы
Вы можете соединять пути с помощью оператора /. Например, чтобы представить файл example.txt в текущей директории, можно сделать так:
file_path = p / 'example.txt' # строит новый путь
print(file_path) # example.txt
Оператор / работает независимо от операционной системы и использует правильный разделитель путей. Заметьте, что оператор / на самом деле реализует магический метод __truediv__() в классе Path, что делает работу с объектами Path очень интуитивной.
Чтобы получить абсолютный путь из объекта Path, вы можете использовать метод absolute():
abs_path = file_path.absolute() # получить абсолютный путь
print(abs_path) # выводит абсолютный путь, например, /home/user/example.txt на Unix или C:\\user\\example.txt на Windows
Класс Path имеет множество полезных методов для распространенных операций:
Path.cwd(): возвращает текущую рабочую директорию как новый объект Path
Path.home(): возвращает домашнюю директорию как новый объект Path
Path.exists(): проверяет, существует ли путь
Path.is_file(): проверяет, является ли путь файлом
Path.is_dir(): проверяет, является ли путь директорией
Path.mkdir(): создает новую директорию по пути
Path.glob(): возвращает генератор, который выдает все файлы, соответствующие шаблону, в директории
Давайте посмотрим, как использовать некоторые из этих методов:
print(Path.cwd()) # выводит текущую рабочую директорию
print(Path.home()) # выводит домашнюю директорию
if not file_path.exists(): # проверяем, существует ли файл
print(f'Файл {file_path} не существует.')
if file_path.is_file(): # проверяем, является ли это файлом
print(f'{file_path} — это файл.')
new_dir = p / 'new_dir'
new_dir.mkdir(exist_ok=True) # создаем новую директорию, ничего не делаем, если она уже существует
for file in p.glob('*.txt'): # перебираем все .txt файлы в текущей директории
print(file)
Помните, что нужно заменить p на ваш объект Path и 'example.txt' на имя вашего файла при необходимости. Модуль pathlib — мощный инструмент для работы с файлами и директориями в Python.
Задача: Из относительного в абсолютный
Появление цифровых архивов значительно упростило управление огромным количеством документов. Однако управление путями к этим документам иногда может быть немного сложным, особенно при работе с относительными и абсолютными путями. Вы работаете разработчиком программного обеспечения в компании по цифровому архивированию. Ваша задача — написать программу, которая может преобразовывать относительные пути в абсолютные, чтобы обеспечить правильное отслеживание и доступность документов.
Дан относительный путь, ваша программа должна вывести соответствующий ему абсолютный путь.
Единственная строка входных данных содержит один относительный путь.
Вывод вашей программы должен быть абсолютным путем, соответствующим введенному относительному пути.