python - python 中的 os.path.join 返回 'wrong' 路径?

标签 python os.path

我有以下来自 ipython 的 python os.path 输出

import os.path as path
path.join("/", "tmp")
Out[4]: '/tmp'
path.join("/", "/tmp")
Out[5]: '/tmp'
path.join("abc/", "/tmp")
Out[6]: '/tmp'
path.join("abc", "/tmp")
Out[7]: '/tmp'
path.join("/abc", "/tmp")
Out[8]: '/tmp'
path.join("def", "tmp")
Out[10]: 'def/tmp'

我发现输出 5、6、7 和 8 违反直觉。有人可以解释一下这个实现是否有具体原因吗?

最佳答案

来自os.path.join() documentation :

Join one or more path components intelligently. If any component is an absolute path, all previous components (on Windows, including the previous drive letter, if there was one) are thrown away, and joining continues.

开头的 / 使 /tmp 成为绝对路径。

如果您想加入多个可能包含前导路径分隔符的路径元素,那么首先去除它们:

os.path.join(*(elem.lstrip(os.sep) for elem in elements))

特殊外壳绝对路径使您可以指定相对路径(来自默认父目录)绝对路径,而不必检测您是否具有绝对路径或相对路径在构建最终值时。

关于python - python 中的 os.path.join 返回 'wrong' 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18125742/

相关文章:

python - 使用 Robot 框架,如何解析 XML 并验证数据?

python - 解析updateinfo.xml

python - 使用 Python 自底向上遍历目录树

python - 在前导斜线之前不丢弃的 os.path.join() ?

python - 如何重命名python中的重复字符串?

python - 隐藏 os.system 产生的控制台输出

python 3 : search subdirectories for a file

python - 如何转换 os.path.getctime()?

python os.path.exists 在文件存在时报告 False

Python ElementTree 默认命名空间?