Ошибка Python os.path.dirname("path") - не возвращает родительский каталог, когда путь заканчивается символом "/"

В некоторых случаях путь к каталогу будет оканчиваться символом "/" для обозначения того, что рассматриваемый путь является каталогом, а не файлом.

Предполагается, что функция 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]

Есть ли причина, по которой эта функция действует так, как она работает, или это реальная ошибка? Если это ошибка, как мне ее подать или кто-то может подать?

1 ответ

На самом деле, os.path.dirname вообще не должен возвращать имя родительского каталога. Из документации по питону:

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 пытается найти его компонентную директорию. Для файла, конечно, это означает каталог, в котором он находится, но для каталога мне кажется логичным вернуть сам каталог.

Другие вопросы по тегам