Apa perbedaan antara os.path.basename () dan os.path.dirname ()?

148

Apa perbedaan antara os.path.basename()dan os.path.dirname()?

Saya sudah mencari jawaban dan membaca beberapa tautan, tetapi tidak mengerti. Adakah yang bisa memberikan penjelasan sederhana?

pengguna1429210
sumber

Jawaban:

288

Kedua fungsi tersebut menggunakan os.path.split(path)fungsi tersebut untuk membagi nama jalur pathmenjadi pasangan; (head, tail).

The os.path.dirname(path)mengembalikan fungsi kepala jalan.

Misalnya: Dirname dari '/foo/bar/item'adalah '/foo/bar'.

The os.path.basename(path)fungsi mengembalikan ekor jalan.

Misalnya: Nama dasar '/foo/bar/item'pengembalian'item'

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

Breno Teixeira
sumber
24
Ingatlah bahwa jika Anda mengganti itemdengan item/, yang merupakan direktori, kemudian os.path.split('foo/bar/item/')mengembalikan ('foo/bar/item', '').
jkdev
1
apa yang akan terjadi jika jalurnya berupa file, katakanlah, "foo.bar"?
ZhaoGang
4
@jkdev Ya, jika Anda ingin mendapatkan nama direktori terakhir di sebuah jalur, Anda harus menggunakan:os.path.basename(os.path.dirname(path))
tli2020
@ZhaoGang Jika seluruh jalan hanya nama file, os.path.basename kemudian (nama_file) mengembalikan nama file: di sini, 'foo.bar'dan os.path.dirname (nama_file) mengembalikan sebuah string kosong: ''.
jkdev
6

Untuk meringkas apa yang disebutkan oleh Breno di atas

Katakanlah Anda memiliki variabel dengan jalur ke file

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

os.path.basename(path) mengembalikan string 'myfile.py'

dan

os.path.dirname(path)mengembalikan string '/home/User/Desktop'(tanpa garis miring '/')

Fungsi-fungsi ini digunakan ketika Anda harus mendapatkan nama file / nama direktori yang diberi nama path lengkap.

Jika path file hanya nama file (misalnya, bukan path = '/home/User/Desktop/myfile.py'Anda yang hanya punya myfile.py), os.path.dirname(path)kembalikan string kosong.

Umar Dastgir
sumber