这个os.path用法有什么问题?
在Windows XP上使用os.path时,遇到了意外的结果,Python版本是2.6.6:
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应用程序的文本框中获取这个路径的,所以它是以字符串的形式出现的,里面有未转义的反斜杠,而我似乎无法用“replace”来替换它们。
3 个回答
0
你的问题出在变量a的赋值上。你需要在字符串中的反斜杠前加一个反斜杠来进行转义。试试这样做:
a = "D:\\temp\\temp.txt"
9
你没有正确处理反斜杠。要么用 \\
代替 \
,要么使用原始字符串,比如:
a = r"D:\temp\temp.txt"
在你没有处理的字符串中,\t
会被当作制表符来理解。
0
使用 a.encode('string-escape')
这个方法看起来比其他解决方案更好,原因有两个:第一,它可以直接在代码中使用,不需要额外的步骤;第二,它不会多加额外的单引号或双引号。