pythonpython-3.xpython-3.4

normalize non-existing path using pathlib only


python has recently added the pathlib module (which i like a lot!).

there is just one thing i'm struggling with: is it possible to normalize a path to a file or directory that does not exist? i can do that perfectly well with os.path.normpath. but wouldn't it be absurd to have to use something other than the library that should take care of path related stuff?

the functionality i would like to have is this:

from os.path import normpath
from pathlib import Path
pth = Path('/tmp/some_directory/../i_do_not_exist.txt')
pth = Path(normpath(str(pth)))
# -> /tmp/i_do_not_exist.txt

but without having to resort to os.path and without having to type-cast to str and back to Path. also pth.resolve() does not work for non-existing files.

is there a simple way to do that with just pathlib?


Solution

  • is it possible to normalize a path to a file or directory that does not exist?

    Starting from 3.6, it's the default behavior. See https://docs.python.org/3.6/library/pathlib.html#pathlib.Path.resolve

    Path.resolve(strict=False)
    ...
    If strict is False, the path is resolved as far as possible and any remainder is appended without checking whether it exists