python - os.path.basename 是用于文件系统文件吗?

标签 python os.path

在 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/

相关文章:

python - 将转义的 unicode 字符转换为 unicode 表示法

python - 在 makefile 中使用变量

python - 当我在 python 中播放 WAV 时,文件结束时程序不会停止,导致程序无响应

python - Python 的 os.path.relpath 的意外行为

Python 引发 NotADirectoryError

python - 从 dict 创建 numpy 数组

python - 余弦相似度和余弦距离的区别

python - 如何在Python中根据某些条件剪切字符串的末尾?

python - 如何/在哪里使用 os.path.sep?

python - 在 python 中,如何获取 "."的完整路径名?