[Python-Dev] Add os.path.resolve to simplify the use of os.readlink

Antoine Pitrou solipsis at pitrou.net
Thu Jun 21 16:48:00 CEST 2012


On 2012年6月21日 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.


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /