Очень важная функция, которая будет постоянно встречаться вам в различных проектах и примерах, называется 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
не просто утилита — это ключ к созданию кросс-платформенных приложений, которые без труда справляются с файловыми системами разных операционных систем.
Разберем работу двух функций:
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))