【发布时间】:2019-02-06 04:51:46
【问题描述】:
在某些情况下,目录路径将被终止 用“/”字符表示路径 question是一个目录而不是一个文件。
os.path.dirname 函数应该返回 父目录名称,但当出现“/”时 在路径字符串的末尾是目录本身 而不是返回父目录。
示例:
>>> os.path.dirname("/a/b/c/d/e/f")
'/a/b/c/d/e' <----- correct
>>> os.path.dirname("/a/b/c/d/e/f/")
'/a/b/c/d/e/f' <-----------------should be '/a/b/c/d/e'
似乎需要对“/”字符进行测试 像这样:
如果 s[-1] == "/": s=s[:-1]
这个函数的行为方式是否有原因, 或者这是一个实际的错误?如果这是一个错误,我该如何归档 它或有人可以提交这个吗?
【问题讨论】:
-
也许你可以在获取目录名之前执行 "/a/b/c/d/e/f/".rstrip("/")。
-
谢谢,这是另一种方法 - 如果 s[-1] == "/": s=s[:-1] 。此函数的帮助文档措辞不准确,因为它说的是“目录名称”,但它确实应该说“父目录”名称,因为它不知道或不检查它所传递的内容,它只是盲目地将字符串视为路径, 和 UNIX 的“dirname”命令一样。结尾的“/”字符只能表示一件事,即左侧的字符串表示目录而不是文件,因此返回该字符串的“目录组件”实际上将返回文件名本身。
标签: python operating-system os.path dirname