在 Windows 中,os.path.basename('D:\\abc\def.txt')
返回 abc\def.txt
,而 os .path.basename('/abc/def.txt')
返回 def.txt
。
第一个不应该返回def.txt
吗?
最佳答案
您的文件名中有转义码,而不是\
目录分隔符。您必须通过使用 def
作为文件名来简化您的问题,但是如果您实际使用该简化的文件名进行测试,您会发现斜杠会加倍:
>>> 'D:\\abc\def.txt'
'D:\\abc\\def.txt'
请注意,字符串文字中的 \d
在值的 Python 表示形式中变成了 \\
转义反斜杠。这是因为没有有效的 \d
转义序列。在 Windows 系统上,os.path.basename()
调用按该路径的预期工作:
>>> import os.path
>>> os.path.basename('D:\\abc\\def.txt')
'def.txt'
但是,在您的情况下,您创建了一个转义序列,\n
、\r
或 \t
,因为您忘记了将反斜杠加倍,或者您忘记使用原始字符串。文件名的该部分没有有\
字符,因此该位置没有任何可分割的内容。
使用r'...'
原始字符串来防止单个反斜杠形成转义序列,或者在所有位置使用双反斜杠,或者使用正斜杠(Windows接受其中之一)。
关于python - os.path.basename 是用于文件系统文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32202236/