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



在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但第一个没有。 我一定不明白加入文档,但我不明白为什么我得到不同的输出。提前致谢

join()文档字符串:

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

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

行为上讲,使用相对路径而不是绝对路径可以说更有意义;在绝对路径前面附加任何东西并没有多大意义,因为它已经从 FS 根开始了。

最新更新