Python Glossary English

все Python 3osфункция

os.path.realpath

os.path — абсолютизация

Возвращает канонический путь, разрешая все символические ссылки по дороге.

Синтаксис

os.path.realpath(path)

Для несуществующего пути ошибки не будет: функция разрешит то, что есть, а остаток присоединит как есть. Чтобы получить FileNotFoundError, передайте strict=True (с Python 3.10). Это правильный шаг перед проверкой «файл внутри разрешённого каталога»: сначала realpath, потом commonpath, — иначе обход через символическую ссылку пройдёт незамеченным.

Примеры

# Python 3.9+
import os
print(os.path.isabs(os.path.realpath('.')))   # → True
lib = os.path.dirname(os.__file__)
print(os.path.realpath(os.path.join(lib, 'json', '..', 'os.py')) == os.path.realpath(os.__file__))   # → True (лишние шаги и '..' схлопываются)
print(os.path.abspath('.') == os.path.realpath('.'))   # → True (в обычном каталоге; False, если путь ведёт через символическую ссылку — abspath ссылки не разрешает)
try:
    os.path.realpath('нет-такого-файла', strict=True)
except FileNotFoundError as e:
    print(type(e).__name__)   # → FileNotFoundError (при strict=True путь обязан существовать)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности