连接:os.path的字符串和绝对路径

mar*_*arw 5 python string path

为什么这不起作用,我做错了什么?

>>> p1 = r'\foo\bar.txt'
>>> os.path.join('foo1', 'foo2', os.path.normpath(p1))
'\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud)

我期待这个:

'foo1\\foo2\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud)

编辑:

一个办法

>>> p1 = r'\foo\bar.txt'
>>> p1 = p1.strip('\\') # Strip '\\' so the path would not be absolute 
>>> os.path.join('foo1', 'foo2', os.path.normpath(p1))
'foo1\\foo2\\foo\\bar.txt'
Run Code Online (Sandbox Code Playgroud)

小智 9

os.path.join遇到一条绝对路径时,它会将它积累的东西扔掉.绝对字符串是以斜杠开头的字符串(在Windows上为ans,带有可选的驱动器号).normpath不会触及那个斜线,因为它具有相同的绝对路径概念.你必须去掉那条斜线.

如果我可以问:它首先来自哪里?