Le 06/08/2014 18:36, Isaac Schwabacher a écrit :

If a symbolic link is encountered during pathname resolution, the
behavior shall depend on whether the pathname component is at the
end of the pathname and on the function being performed. If all of
the following are true, then pathname resolution is complete:

1. This is the last pathname component of the pathname. 2. The
pathname has no trailing <slash>. 3. The function is required to
act on the symbolic link itself, or certain arguments direct that
the function act on the symbolic link itself.

In all other cases, the system shall prefix the remaining pathname,
if any, with the contents of the symbolic link. [...]

So the only case where this would make a difference is when calling a "function acting on the symbolic link itself" (such as lstat() or unlink()) on a path with a trailing slash:

>>> os.lstat('foo')
os.stat_result(st_mode=41471, st_ino=1981954, st_dev=2050, st_nlink=1, st_uid=1000, st_gid=1000, st_size=4, st_atime=1407370025, st_mtime=1407370025, st_ctime=1407370025)
>>> os.lstat('foo/')
os.stat_result(st_mode=17407, st_ino=917505, st_dev=2050, st_nlink=7, st_uid=0, st_gid=0, st_size=4096, st_atime=1407367916, st_mtime=1407369857, st_ctime=1407369857)

>>> pathlib.Path('foo').lstat()
os.stat_result(st_mode=41471, st_ino=1981954, st_dev=2050, st_nlink=1, st_uid=1000, st_gid=1000, st_size=4, st_atime=1407370037, st_mtime=1407370025, st_ctime=1407370025)
>>> pathlib.Path('foo/').lstat()
os.stat_result(st_mode=41471, st_ino=1981954, st_dev=2050, st_nlink=1, st_uid=1000, st_gid=1000, st_size=4, st_atime=1407370037, st_mtime=1407370025, st_ctime=1407370025)

But you can also call resolve() explicitly if you want to act on the link target rather than the link itself:

>>> pathlib.Path('foo/').resolve().lstat()
os.stat_result(st_mode=17407, st_ino=917505, st_dev=2050, st_nlink=7, st_uid=0, st_gid=0, st_size=4096, st_atime=1407367916, st_mtime=1407369857, st_ctime=1407369857)

Am I overlooking other cases?

Regards

Antoine.

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to