Let's say I open a python console inside /home/me/symlink/dir, which is actually a shortcut to /home/me/path/to/the/dir. In this console I execute the following code: from pathlib import Path path = Path.cwd() print(path) # "/home/me/path/to/the/dir"  So cwd() actually resolves the symlinks and get the absolute path automatically and I am searching how to avoid this behavior. If the path with symlink is provided at the Path object declaration, it seems to work as I would like: from pathlib import Path path = Path("/home/me/symlink/dir") print(path) # "/home/me/symlink/dir"  Is there a way to get the current working directory keeping the symlink other than providing the path at object instantiation ?
you'll need to use os.getcwd() . Path.cwd() internally uses os.getcwdb() which resolves symlinks, while os.getcwd() preserves them. from pathlib import Path import os path = Path(os.getcwd()) print(path)  If you need work with symlinks in general. path.is_symlink() - check if a path is a symlink path.resolve() - resolve symlinks to get the actual path path.readlink() - get the target of a symlink path = Path(os.getcwd()) if path.is_symlink(): real_path = path.resolve() # "/home/me/path/to/the/dir" symlink_target = path.readlink() # Gets the symlink target  Edit 1: For your test case, The PWD environment variable often contains the path with preserved symlinks, as it's typically maintained by the shell. import os from pathlib import Path def get_symlinked_cwd(): return Path(os.getenv("PWD", os.getcwd())) symlink_path = get_symlinked_cwd() print(symlink_path) 