Чим відрізняється os.path.basename () від os.path.dirname ()?


139

У чому різниця між os.path.basename()і os.path.dirname()?

Я вже шукав відповіді і читав деякі посилання, але не розумів. Хтось може дати просте пояснення?

Відповіді:


273

Обидві функції використовують os.path.split(path)функцію, щоб розділити ім'я шляху pathна пару; (head, tail).

os.path.dirname(path)Функція повертає голова шляху.

Наприклад: імя_діректоріі з '/foo/bar/item'IS '/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"?
ZhaoGang

4
@jkdev Так, якщо ви хочете отримати ім'я останнього каталогу в шляху, слід використовувати:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang Якщо весь шлях тільки ім'я файлу, а потім os.path.basename (Імя_файла) повертає ім'я файлу: тут, 'foo.bar'і os.path.dirname (Імя_файла) повертає порожній рядок: ''.
jkdev

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)повертає порожній рядок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.