为什么在这种情况下os.path.join()不起作用?
问题内容:
下面的代码将不会加入,在调试时该命令不会存储整个路径,而只会存储最后一个条目。
os.path.join('/home/build/test/sandboxes/', todaystr, '/new_sandbox/')
当我对此进行测试时,它仅存储/new_sandbox/
部分代码。
问题答案:
后面的字符串不应以斜杠开头。如果它们以斜杠开头,那么它们将被视为“绝对路径”,并且丢弃它们之前的所有内容。
如果组件是绝对路径,则所有先前的组件都将被丢弃,并且连接将从绝对路径组件继续。
请注意,在Windows上,与驱动器号有关的行为与早期的Python版本相比似乎有所变化:
在Windows上,
r'\foo'
遇到绝对路径组件(例如)时,不会重置驱动器号。如果组件包含驱动器号,则会丢弃所有先前的组件,并重置驱动器号。请注意,由于每个驱动器都有一个当前目录,因此os.path.join("c:", "foo")
表示相对于驱动器C:
(c:foo
)上当前目录的路径,而不是c:\foo
。