Was ist der Unterschied zwischen os.path.basename () und os.path.dirname ()?


138

Was ist der Unterschied zwischen os.path.basename()und os.path.dirname()?

Ich habe bereits nach Antworten gesucht und einige Links gelesen, aber nicht verstanden. Kann jemand eine einfache Erklärung geben?

Antworten:


272

Beide Funktionen verwenden die os.path.split(path)Funktion, um den Pfadnamen pathin ein Paar aufzuteilen . (head, tail).

Die os.path.dirname(path)Funktion gibt den Kopf des Pfades zurück.

ZB: Der Dirname von '/foo/bar/item'ist '/foo/bar'.

Die os.path.basename(path)Funktion gibt das Ende des Pfades zurück.

ZB: Der Basisname der '/foo/bar/item'Retouren'item'

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


23
Denken Sie daran, dass beim Ersetzen itemdurch item/, bei dem es sich um ein Verzeichnis handelt, os.path.split('foo/bar/item/')zurückgegeben wird ('foo/bar/item', '').
JKDEV

1
Was passiert, wenn der Pfad eine Datei ist, z. B. "foo.bar"?
ZhaoGang

4
@jkdev Ja, wenn Sie den letzten Verzeichnisnamen in einem Pfad erhalten möchten, sollten Sie verwenden:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang Wenn der gesamte Pfad nur ein Dateiname ist, gibt os.path.basename (Dateiname) den Dateinamen zurück: here 'foo.bar', und os.path.dirname (Dateiname) gibt eine leere Zeichenfolge zurück : ''.
JKDEV

4

Um zusammenzufassen, was Breno oben erwähnt hat

Angenommen, Sie haben eine Variable mit einem Pfad zu einer Datei

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

os.path.basename(path) Gibt die Zeichenfolge zurück 'myfile.py'

und

os.path.dirname(path)gibt den String zurück '/home/User/Desktop'(ohne einen abschließenden Schrägstrich '/')

Diese Funktionen werden verwendet, wenn Sie den Dateinamen / Verzeichnisnamen mit einem vollständigen Pfadnamen erhalten müssen.

Falls der Dateipfad nur der Dateiname ist (z. B. anstatt path = '/home/User/Desktop/myfile.py'Sie nur haben myfile.py), wird os.path.dirname(path)eine leere Zeichenfolge zurückgegeben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.