os.path.join函数的奇怪特性

示例代码:

path = os.path.join('output', '/tech/python.html')
print(path)

为什么path为/tech/python.html,而不是output/tech/python.html

os.path.join 中,如果某个路径组件是绝对路径(即以 /\ 开头的路径),那么它之前的所有路径组件都会被忽略,拼接会从该绝对路径组件开始。

在例子中:

```python
path = os.path.join('output', '/tech/python.html')
```

因此,最终的路径是:

```
/tech/python.html
```

为什么会这样设计?

我也不知道为什么,函数应该能处理各种异常情况,都能正确拼接, 结果为output/tech/python.html。 我花费了半小时来进行调试分析解决这个奇怪的特性问题。

如何避免这种情况?

不要使用绝对路径。即第二个参数及以后参数不要以"/"开头

总结