Функция join модуля os.path

Очень важная функция, которая будет постоянно встречаться вам в различных проектах и примерах, называется join

os.path.join в Python представляет собой мощный инструмент для создания путей к файлам и директориям, обеспечивая правильное составление их в зависимости от операционной системы. Этот метод автоматически добавляет необходимые разделители между компонентами пути, что упрощает работу с файловой системой и повышает переносимость кода.

 

Используется чтобы объединить несколько компонентов пути в одно значение

os.path.join(path, *paths)

Имеет следующие параметры:

  • path - начальный путь,

  • *paths - компоненты пути (произвольное количество значений)

С помощью os.path.join можно избежать множества распространенных ошибок, таких как ненужные или отсутствующие разделители. 

Например, вместо того чтобы вручную собирать путь в виде строки "/home/user/" + "documents/" + "file.txt", вы можете использовать os.path.join("home", "user", "documents", "file.txt"). Рассмотрим примеры работы:

>>> print(os.path.join("home", "user", "documents", "file.txt"))
home/user/documents/file.txt

Также рассмотрим следующий пример. В нем мы передаем значения в виде кортежа:

import os.path

print(os.path.join('home', 'user', 'pyhub'))

paths = ('one', 'two', 'three')
print(os.path.join(*paths))

Мы получим следующий результат:

home/user/pyhub
one/two/three

Преимуществом использования os.path.join является то, что она позволяет коду оставаться совместимым со всеми операционными системами, поскольку подставляет разделитель, соответствующий платформе, на которой он работает.

В windows результат будет таким

home\user\egoroff
one\two\three

а в linux

home/user/egoroff
one/two/three

Python разработчики могут снизить риск таких ошибок, так как данный метод автоматически обеспечивает правильный формат пути, учитывая особенности различных операционных систем.

Кроме того, данный метод способен обрабатывать абсолютные пути, игнорируя остальные компоненты, что дает возможность строить более гибкие и адаптивные алгоритмы. Таким образом, os.path.join не просто утилита — это ключ к созданию кросс-платформенных приложений, которые без труда справляются с файловыми системами разных операционных систем.
 

Нормализация пути в Python

Разберем работу двух функций:

  • os.path.normpath(path)

  • os.path.abspath(path)

Функция os.path.normpath(path)

Пути, полученные с помощью join() или со встроенными переменными, могут иметь дополнительные разделители или компоненты относительного пути. Используйте os.path.normpath, чтобы избавиться от них:

import os.path

print(os.path.normpath('one//two//three'))
print(os.path.normpath('one/../alt/two/three'))
print(os.path.normpath('one/./two/./three'))

Мы получим следующий результат:

one/two/three
alt/two/three
one/two/three

Функция os.path.abspath(path)

Функция os.path.abspath используется для преобразования относительного пути в абсолютное

print(os.path.abspath('.'))
print(os.path.abspath('../alt/two/three'))
print(os.path.abspath('./three'))

Функция os.path.abspath возвращает нормализованную абсолютную версию пути.

/Users/permin0ff/Downloads/project/fastapi_ecommerce/app
/Users/permin0ff/Downloads/project/fastapi_ecommerce/alt/two/three
/Users/permin0ff/Downloads/project/fastapi_ecommerce/app/three

На большинстве платформ это эквивалентно вызову функции os.path.normpath() следующим образом: 

os.path.normpath(join(os.getcwd(),path))

Перейти к следующему шагу

Комментарии