这个os.path用法有什么问题?

时间:2011-03-31 16:56:44

标签: python windows path

在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应用程序中的文本字段获取此路径,因此它是一个带有未转义反斜杠的字符串,我似乎无法用“替换”替换它们。

3 个答案:

答案 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)它不会添加额外的单引号/双引号。