为什么这不起作用,我做错什么了?
>>> p1 = r'\foo\bar.txt'
>>> os.path.join('foo1', 'foo2', os.path.normpath(p1))
'\\foo\\bar.txt'
我预料到:
'foo1\\foo2\\foo\\bar.txt'
编辑:
>>> 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'
如果希望
os.path.join
的目标行为将两个绝对路径连接在一起,请去掉分隔符:如果要修改路径,也可以使用列表理解来执行类似的酷操作:
当
os.path.join
遇到一个绝对路径时,它会把它积累到的东西扔掉。绝对字符串是以斜线开头的字符串(在windows上是ans,带有可选的驱动器号)。normpath
不会碰到斜杠,因为它有相同的绝对路径概念。你必须去掉那条斜线。如果我可以问:它最初是从哪里来的?
p1是一个绝对路径(以\开头),因此根据文档,它是自己返回的:
相关问题 更多 >
编程相关推荐