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