В чем разница между os.path.basename () и os.path.dirname ()?

139

В чем разница между os.path.basename()и os.path.dirname()?

Я уже искал ответы и читал некоторые ссылки, но не понял. Кто-нибудь может дать простое объяснение?

user1429210
источник

Ответы:

273

Обе функции используют os.path.split(path)функцию, чтобы разделить имя пути pathна пару; (head, tail),

os.path.dirname(path)Функция возвращает голова пути.

Например: Dirname '/foo/bar/item'является '/foo/bar'.

os.path.basename(path)Функция возвращает хвост пути.

Например: базовое имя '/foo/bar/item'возвращается'item'

От: http://docs.python.org/2/library/os.path.html#os.path.basename

Брено Тейшейра
источник
24
Помните, что если вы замените itemна item/, который является каталогом, то os.path.split('foo/bar/item/')возвращается ('foo/bar/item', '').
jkdev
1
что будет, если путь к файлу, скажем, "foo.bar"?
Чжао Ган
4
@jkdev Да, если вы хотите получить последнее имя каталога в пути, вы должны использовать:os.path.basename(os.path.dirname(path))
tli2020
@ZhaoGang Если весь путь только имя файла, а затем os.path.basename (имя_файл) возвращает имя файла: здесь, 'foo.bar'и os.path.dirname (имя_файл) возвращает пустую строку: ''.
августа
4

Подводя итог, что было упомянуто Брено выше

Скажем, у вас есть переменная с путем к файлу

path = '/home/User/Desktop/myfile.py'

os.path.basename(path) возвращает строку 'myfile.py'

и

os.path.dirname(path)возвращает строку '/home/User/Desktop'(без завершающей косой черты '/')

Эти функции используются, когда вам нужно получить имя файла / имя каталога с указанием полного пути.

В случае, если путь к файлу - это просто имя файла (например, вместо того, path = '/home/User/Desktop/myfile.py'чтобы просто указать myfile.py), os.path.dirname(path)возвращает пустую строку.

Умар Дастгир
источник