在多个开源项目中,我看到人们确实os.path.abspath(os.path.realpath(__file__))
在获取当前文件的绝对路径。
但是,我发现os.path.abspath(__file__)
并os.path.realpath(__file__)
产生相同的结果。os.path.abspath(os.path.realpath(__file__))
似乎有点多余。
人们使用它是有原因的吗?
os.path.realpath
在支持它们的操作系统上取消引用符号链接,返回path的真实路径,不展示引用路径
os.path.abspath
只需从路径中删除类似.
和..的东西即可,提供从目录树的根到命名文件(或符号链接)的完整路径
例如,在Ubuntu上
$ ls -l
total 0
-rw-rw-r-- 1 guest guest 0 Jun 16 08:36 a
lrwxrwxrwx 1 guest guest 1 Jun 16 08:36 b -> a
$ python
Python 2.7.11 (default, Dec 15 2015, 16:46:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from os.path import abspath, realpath
>>> abspath('b')
'/home/guest/play/paths/b'
>>> realpath('b')
'/home/guest/play/paths/a'
符号链接可以包含相对路径,因此需要同时使用两者。内部调用realpath
可能会返回包含嵌入式..
部件的路径,abspath
然后将其删除。