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