python中os.path.isabs(path)的分析

这个本身是小组朋友问的问题,感觉不错,我给出的回答

 

问:

>>> os.path.isabs("/home")
True
>>> os.path.isabs("/home/..")
True
>>> os.path.isabs("home/..")
False
这里第二个应该是相对路径吧? 应该返回False?

 

答:

首先,给段资料
The current os.path.isabs documentation says:
> isabs(path)
>    Return True if path is an absolute pathname (begins with a slash).
The "begins with a slash" part is incorrect since certain systems use a
different pathname notation.
For example, on Macintosh (where os.sep == ":") this is an absolute
pathname:
hardDriveName:folderName1:folderName2:fileName.ext
...and this is a relative one:
:folderName1:fileName.ext
Moreover, on Windows os.path.isabs('\\') returns True since '\\' is an
alias for the current drive letter (e.g. C:\\) hence, independently from
what said before, the documentation should include also the "backslash"
term.
It turns out that on Windows there are really 4 different kinds of paths:
1) Completely relative, e.g. foo\bar
2) Completely absolute, e.g. c:\foo\bar or \\server\share
3) Halfbreeds with no drive, e.g. \foo\bar
4) Halfbreeds relative to the current working directory on a specific drive, e.g. c:foo\bar
Python 2.5's os.path.isabs() method considers both (2) and (3) to be absolute;
然后,分析
|这里第二个应该是相对路径吧? 应该返回False?
根据, linux中absolute *is*
begins with a slash, so return True
说说,第三个吧,你除非在"/"目录下,要不然在其他目录下当然是错的,应为这个路径就不对
而,我在"/"目录下也试了,也返回False,那是因为没有以slash开始
linux中,你只用记下上面那句话就好,其他系统看上面的资料

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值