Сообщить об ошибке.

Функция realpath() модуля os.path в Python

Получить канонический путь к файлу по символической ссылке

Синтаксис:

import os.path

os.path.realpath(path, *, strict=False)

Параметры:

  • path - путь к символической ссылке на файл.
  • strict=False - отвечает за разрешение пути в неоднозначных ситуациях (доступен с версии Python 3.10).

Возвращаемое значение:

  • канонический путь указанного имени файла.

Описание:

Функция realpath() модуля os.path возвращает канонический путь к указанному имени файла, устраняя любые символические ссылки, встречающиеся в пути (если они поддерживаются операционной системой). В Windows эта функция также разрешает имена стилей MS-DOS, такие как C:\\PROGRA~1 в C:\\Program Files.

Если путь не существует или встречается зацикливание символической ссылки, а аргумент strict установлен в True (доступен с версии Python 3.10), то возникает ошибка OSError. Если аргумент strict имеет значение False, то путь разрешается, насколько это возможно, и любой остаток пути добавляется без проверки, существует ли он.

Примечание. функция os.path.realpath() эмулирует процедуру операционной системы для создания канонического пути, которая немного отличается в Windows и UNIX в отношении взаимодействия ссылок и последующих компонентов пути. API операционной системы делают пути каноническими по мере необходимости, поэтому обычно нет необходимости вызывать эту функцию.

Аргумент path может принимать байтовые или текстовые строки. Результатом будет является тот же тип.

Функция os.path.realpath() может принимать объект, представляющий путь к файловой системе, например такой как pathlib.PurePath.

Изменено в Python 3.8: Символические ссылки теперь разрешены в Windows.

Изменено в Python 3.10: Добавлен аргумент strict.

Примеры использования os.path.realpath():

>>> import os.path, pathlib
>>> p = pathlib.Path('file.txt')
# создадим файл
>>> p.touch()
# канонический путь
>>> path = os.path.realpath(p)
>>> path
# '/home/docs-python/file.txt'

# проверка символической ссылки
>>> link = os.path.join(os.getcwd(), 'Desktop', 'link')
>>> link
# '/home/docs-python/Desktop/link'

# создадим символическую ссылку
>>> os.symlink(path, link)
# канонический путь по ссылке
>>> os.path.realpath(link)
# '/home/docs-python/file.txt'