Os.path.basename () ve os.path.dirname () arasındaki fark nedir?


139

Arasındaki fark nedir os.path.basename()ve os.path.dirname()?

Zaten cevapları araştırdım ve bazı bağlantıları okudum, ama anlamadım. Herkes basit bir açıklama yapabilir mi?

Yanıtlar:


273

Her iki işlev os.path.split(path)de yol adını pathbir çifte bölmek için bu işlevi kullanır ; (head, tail).

os.path.dirname(path)Fonksiyon yolunun başını döndürür.

Örn: bir birdizin '/foo/bar/item'DİR '/foo/bar'.

os.path.basename(path)Fonksiyon yolunun kuyruk döndürür.

Örn: Geri '/foo/bar/item'dönüşlerin adı'item'

Gönderen: http://docs.python.org/2/library/os.path.html#os.path.basename


24
Bir dizin olan itemile değiştirirseniz item/, os.path.split('foo/bar/item/')geri döneceğini unutmayın ('foo/bar/item', '').
jkdev

1
yol bir dosya ise, "foo.bar" diyelim?
ZhaoGang

4
@jkdev Evet, bir yoldaki son dizin adını almak istiyorsanız şunu kullanmalısınız:os.path.basename(os.path.dirname(path))
tli2020

Bütün yolu sadece dosya adı ise @ZhaoGang ardından os.path.basename (dosya_adı) dosya adını döndürür: burada, 'foo.bar've os.path.dirname (dosya_adı) boş bir dize döndürür: ''.
jkdev

4

Yukarıda Breno tarafından söylenenleri özetlemek gerekirse

Diyelim ki bir dosya yolu olan bir değişkeniniz var

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

os.path.basename(path) dizeyi döndürür 'myfile.py'

ve

os.path.dirname(path)dizeyi döndürür '/home/User/Desktop'(sondaki eğik çizgi olmadan '/')

Bu işlevler, tam yol adı verilen dosya adını / dizin adını almanız gerektiğinde kullanılır.

Durumda dosya yolu sadece dosya adı (örneğin yerine ise path = '/home/User/Desktop/myfile.py'sadece var myfile.py,) os.path.dirname(path)boş bir dize döndürür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.