0

在某些情况下,目录路径将以“/”字符结尾,以表示所讨论的路径是目录而不是文件。

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]

这个函数的行为方式是否有原因,或者这是一个实际的错误?如果这是一个错误,我该如何提交或者有人可以提交这个?

4

1 回答 1

0

实际上,os.path.dirname根本不应该返回父目录名称。来自python 文档

os.path.dirname(路径)

返回路径名路径的目录名。这是通过将路径传递给函数 split() 返回的对的第一个元素。

或者您可以只使用内置的帮助功能:

>>> import os
>>> help(os.path.dirname)
Help on function dirname in module ntpath:

dirname(p)
    Returns the directory component of a pathname

基本上它看起来像给定一个路径, dirname 试图找到它的目录组件。对于文件,当然这意味着它所在的目录,但对于目录,返回目录本身对我来说似乎是合乎逻辑的。

于 2019-02-06T05:11:29.387 回答