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'