[Python-Dev] Add os.path.resolve to simplify the use of os.readlink (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Thu Jun 21 16:48:00 CEST 2012
- Previous message: [Python-Dev] Add os.path.resolve to simplify the use of os.readlink
- Next message: [Python-Dev] Fwd: Re: Add os.path.resolve to simplify the use of os.readlink
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, 21 Jun 2012 10:23:25 -0000 "Armin Ronacher" <armin.ronacher at active-4.com> wrote:
Due to an user error on my part I was not using os.readlink correctly. Since links can be relative to their location I think it would make sense to provide an os.path.resolve helper that automatically returns the absolute path:
def resolve(filename): try: target = os.readlink(filename) except OSError as e: if e.errno == errno.EINVAL: return abspath(filename) raise return normpath(join(dirname(filename), target))
Note that abspath() is buggy in the face of symlinks, for example it will happily collapse /etc/foo/../bar into /etc/bar, even though /etc/foo might be a link to /usr/lib/foo
The only safe way to collapse ".." elements is to resolve symlinks.
Regards
Antoine.
- Previous message: [Python-Dev] Add os.path.resolve to simplify the use of os.readlink
- Next message: [Python-Dev] Fwd: Re: Add os.path.resolve to simplify the use of os.readlink
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]