拆分并重新加入路径而不使用反斜杠

时间:2015-10-08 18:57:21

标签: file python-2.7 path split

Python的新手,当我Frankensplice *路径时,我会获得额外的反斜杠。不知道为什么。我知道它打印出来的是' \'在原始状态。这是在Windows机器上发生的。

*(拆分然后再将它重新组合在一起)

这是我拥有的

import os

f = "C:\\Gwen\\Stefani\\This is bananas.txt"

fname, ext = os.path.splitext(f)
head, tail = os.path.split(fname)

# strip last slash
tail = tail.rstrip("\\")

print ("%r" % (f))    # 'C:\\Gwen\\Stefani\\This is bananas.txt'
print ("%r" % (head)) # 'C:\\Gwen\\Stefani'
print ("%r" % (tail)) # 'This is bananas'
print ("%r" % (ext))  # '.txt'

# join them again
r = os.path.join(head, tail, ext)
print ("%r" % (r)) # 'C:\\Gwen\\Stefani\\This is bananas\\.txt'

2 个答案:

答案 0 :(得分:2)

os.path.split拆分"路径\文件"时,会删除所有反斜杠,因此无需执行tail.rstrip("\\")

此外,将它们添加回来获取相同的文本时,您需要执行以下操作:

r = os.path.join(head, tail, fname + ext)

这是因为os.path.join加入了路径元素,并且可能无法知道您突然只引入了部分文件名(.ext)。换句话说,您需要在加入完整文件路径之前连接文件名。 (这与您需要使用splitext拆分文件名相反...)

答案 1 :(得分:0)

来自os.path.join(path,*paths)的文档: 返回值是路径和*路径的任何成员的串联,其中除了最后一个之外的每个非空部分后面都有一个目录分隔符(os.sep),这意味着结果只会以如果最后一部分为空,则为分隔符。