Sự khác biệt giữa os.path.basename () và os.path.dirname () là gì?


139

Sự khác biệt giữa os.path.basename()và là os.path.dirname()gì?

Tôi đã tìm kiếm câu trả lời và đọc một số liên kết, nhưng không hiểu. Bất cứ ai có thể đưa ra một lời giải thích đơn giản?

Câu trả lời:


273

Cả hai hàm đều sử dụng os.path.split(path)hàm để chia tên đường dẫn paththành một cặp; (head, tail).

Các os.path.dirname(path)hàm trả về người đứng đầu của con đường.

Vd: Tên thư mục của '/foo/bar/item''/foo/bar'.

Các os.path.basename(path)chức năng trả về đuôi của con đường.

Vd: Tên cơ sở của '/foo/bar/item'lợi nhuận'item'

Từ: http://docs.python.org/2/l Library / os.path.html # os.path.basename


24
Hãy nhớ rằng nếu bạn thay thế itembằng item/, đó là một thư mục, sau đó os.path.split('foo/bar/item/')trả về ('foo/bar/item', '').
jkdev

1
Điều gì sẽ xảy ra nếu đường dẫn là một tệp, nói, "foo.bar"?
ZhaoGang

4
@jkdev Có, nếu bạn muốn lấy tên thư mục cuối cùng trong một đường dẫn, bạn nên sử dụng:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang Nếu toàn bộ đường dẫn chỉ là một tên tệp, thì os.path.basename (file_name) trả về tên tệp: ở đây 'foo.bar', và os.path.dirname (file_name) trả về một chuỗi rỗng : ''.
jkdev

4

Để tóm tắt những gì đã được Breno đề cập ở trên

Giả sử bạn có một biến có đường dẫn đến tệp

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

os.path.basename(path) trả về chuỗi 'myfile.py'

os.path.dirname(path)trả về chuỗi '/home/User/Desktop'(không có dấu gạch chéo '/')

Các hàm này được sử dụng khi bạn phải lấy tên tệp / tên thư mục được cung cấp tên đường dẫn đầy đủ.

Trong trường hợp đường dẫn tệp chỉ là tên tệp (ví dụ thay vì path = '/home/User/Desktop/myfile.py'bạn chỉ có myfile.py), os.path.dirname(path)trả về một chuỗi trống.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.