我有以下来自 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/