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

1 投票
3 回答
515 浏览
提问于 2025-04-16 14:49

在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') 这个方法看起来比其他解决方案更好,原因有两个:第一,它可以直接在代码中使用,不需要额外的步骤;第二,它不会多加额外的单引号或双引号。

撰写回答