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'
答案 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),这意味着结果只会以如果最后一部分为空,则为分隔符。