我正在学习Python,我注意到我的一个脚本有些奇怪。做了一点测试,我发现问题源于这种行为:
>>> import os
>>> os.path.join('a','b')
'a/b'
>>> os.path.join('a','/b')
'/b'
检查
documentation
,这实际上是功能的设计:
操作系统。路径
参加
(
路径1
[
,
路径2
[
, ...
]]
)
智能地连接一个或多个路径组件。如果任何组件是绝对路径,则所有以前的组件(在Windows上,包括以前的驱动器号,如果有)都将被丢弃,并继续加入。。。
我的问题不是
why my script failed
而是为什么功能是这样设计的。我是说,至少在Unix上,
a//b
这是一种完全可以接受的指定路径的方式,如果不是优雅的话。为什么功能是这样设计的?有没有办法判断一个或多个path元素在测试每个path字符串之前是否已被丢弃
os.path.isabs()
?
出于好奇,我还检查了路径组件以
os.sep
人物:
>>> os.path.join('a/','b')
'a/b'
正如预期的那样。