os.path.join似乎对斜杠很敏感,为什么?

时间:2019-04-15 16:30:54

标签: python os.path expanduser

在os.join中的文档中添加斜杠会产生不同的结果,而我认为不应该这样。为什么?

只需尝试编写可为多个用户完成合理工作的代码即可。

import os
# Initialize output files and folders, following principle of separating code from data
homeDir = os.path.expanduser('~')
targetDir = os.path.join(homeDir, '/Documents/Jeopardy/output')
print(targetDir)
# produces /Documents/Jeopardy/output  which is not expected
targetDir = os.path.join(homeDir, 'Documents/Jeopardy/output')
print(targetDir)
# produces /home/max/Documents/Jeopardy/output  which is expected

我希望两个联接都能产生       / home / max / Documents / Jeopardy / output 但是第一个没有。我一定不明白联接文档,但是我看不到为什么得到不同的输出。 预先感谢

1 个答案:

答案 0 :(得分:1)

来自join() docstring

  

如果组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。

'/Documents/Jeopardy/output'是绝对路径,因此第一部分将被丢弃。

从行为上讲,使用相对而非绝对路径更有意义。将任何内容放在绝对路径之前没有任何意义,因为它已经从FS根目录开始。