为什么要同时使用os.path.abspath和os.path.realpath?

在多个开源项目中,我看到人们确实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然后将其删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值