[New-bugs-announce] [issue26976] pathlib equivalent for os.path.realpath()

Davide Rizzo report at bugs.python.org
Sun May 8 07:15:48 EDT 2016

New submission from Davide Rizzo:

pathlib doesn't provide an exact replacement for os.path.realpath().

Path.resolve() is the closest equivalent, but differs in behavior in one case: when the path does not exist.

>>> os.path.realpath('/foo')

>>> Path('/foo').resolve()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/pathlib.py", line 1094, in resolve
    s = self._flavour.resolve(self)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/pathlib.py", line 330, in resolve
    return _resolve(base, str(path)) or sep
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/pathlib.py", line 315, in _resolve
    target = accessor.readlink(newpath)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/pathlib.py", line 422, in readlink
    return os.readlink(path)
FileNotFoundError: [Errno 2] No such file or directory: '/foo'

This impairs pathlib usefulness to sanitize user input when I am about to create a file or a directory. The file does not exist yet, and pathlib doesn't provide an easy mean to validate whether the provided input is safe.

components: Library (Lib)
messages: 265128
nosy: davide.rizzo
priority: normal
severity: normal
status: open
title: pathlib equivalent for os.path.realpath()
versions: Python 3.6

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list