Qual é a diferença entre os.path.basename () e os.path.dirname ()?


139

Qual é a diferença entre os.path.basename()e os.path.dirname()?

Eu já procurei respostas e li alguns links, mas não entendi. Alguém pode dar uma explicação simples?

Respostas:


273

Ambas as funções usam a os.path.split(path)função para dividir o nome do caminho pathem um par; (head, tail).

A os.path.dirname(path)função retorna o início do caminho.

Por exemplo: O nome do diretório de '/foo/bar/item'é '/foo/bar'.

A os.path.basename(path)função retorna a cauda do caminho.

Por exemplo: o nome base dos '/foo/bar/item'retornos'item'

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


24
Lembre-se de que, se você substituir itempor item/, que é um diretório, os.path.split('foo/bar/item/')retornará ('foo/bar/item', '').
Jkdev #

1
o que acontecerá se o caminho for um arquivo, digamos "foo.bar"?
ZhaoGang 26/09

4
@jkdev Sim, se você deseja obter o sobrenome do diretório em um caminho, use:os.path.basename(os.path.dirname(path))
tli2020

@ZhaoGang Se todo o caminho é apenas um nome de arquivo, os.path.basename então (file_name) retorna o nome do arquivo: aqui, 'foo.bar'e os.path.dirname (file_name) retorna uma string vazia: ''.
Jkdev #

4

Para resumir o que foi mencionado por Breno acima

Digamos que você tenha uma variável com um caminho para um arquivo

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

os.path.basename(path) retorna a string 'myfile.py'

e

os.path.dirname(path)retorna a string '/home/User/Desktop'(sem uma barra final '/')

Essas funções são usadas quando você precisa obter o nome do arquivo / diretório com um nome completo do caminho.

Caso o caminho do arquivo seja apenas o nome do arquivo (por exemplo, em vez de path = '/home/User/Desktop/myfile.py'você apenas ter myfile.py), os.path.dirname(path)retorna uma string vazia.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.