在Windows XP,Python 2.6.6上使用os.path获得意外结果:
a = "D:\temp\temp.txt"
os.path.dirname(a)
>>> 'D:' # Would expect 'D:\temp'
os.path.normpath(a)
>>> 'D:\temp\test.txt'
os.path.basename(a)
>>> '\temp\test.txt' #Would expect 'test.txt'
a.replace("\\", "/")
>>>'D:\temp\test.txt' # Would expect 'D:/temp/test.txt'
有人可以解释发生了什么吗?我怎样才能获得正确/预期的行为?为什么我不能用前斜线替换反斜杠?
编辑:我从wxPython应用程序中的文本字段获取此路径,因此它是一个带有未转义反斜杠的字符串,我似乎无法用“替换”替换它们。答案 0 :(得分:9)
你没有逃脱你的反斜杠。使用\\
代替\
,或使用原始字符串,例如:
a = r"D:\temp\temp.txt"
在未转义的字符串中,\t
被解释为制表符。
答案 1 :(得分:0)
你的问题在于分配a。你需要转义字符串中的反斜杠试试这个:
a = "D:\\temp\\temp.txt"
答案 2 :(得分:0)
使用a.encode('string-escape')
似乎比其他解决方案更可取,因为i)它可以内联完成,ii)它不会添加额外的单引号/双引号。